CredentialManager: Allow saving/getting device metadata blobs

PiperOrigin-RevId: 525518359
This commit is contained in:
Anay Wadhera
2023-04-19 12:22:19 -07:00
committed by Copybara-Service
parent f1a1a7510b
commit 7f227a5205
3 changed files with 33 additions and 0 deletions
@@ -21,6 +21,7 @@
#include "absl/strings/string_view.h"
#include "internal/platform/implementation/credential_callbacks.h"
#include "internal/proto/credential.pb.h"
#include "internal/proto/local_credential.pb.h"
namespace nearby {
namespace api {
@@ -95,6 +95,18 @@ class CredentialManager {
virtual std::string DecryptMetadata(absl::string_view metadata_encryption_key,
absl::string_view key_seed,
absl::string_view metadata_string) = 0;
// Sets the NP service's device metadata, regenerating credentials if
// `regen_credentials` is set to true.
virtual void SetLocalDeviceMetadata(
const ::nearby::internal::Metadata& metadata, bool regen_credentials,
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;
// Gets the NP service's device metadata.
virtual ::nearby::internal::Metadata GetLocalDeviceMetadata() = 0;
};
} // namespace presence
@@ -31,6 +31,7 @@
#include "internal/platform/runnable.h"
#include "internal/platform/single_thread_executor.h"
#include "internal/proto/credential.pb.h"
#include "internal/proto/metadata.proto.h"
#include "presence/implementation/credential_manager.h"
namespace nearby {
@@ -127,6 +128,24 @@ class CredentialManagerImpl : public CredentialManager {
std::vector<uint8_t> ExtendMetadataEncryptionKey(
absl::string_view metadata_encryption_key);
void SetLocalDeviceMetadata(
const Metadata& metadata, bool regen_credentials,
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 {
metadata_ = metadata;
if (regen_credentials) {
GenerateCredentials(
metadata, manager_app_id, identity_types, credential_life_cycle_days,
contiguous_copy_of_credentials, std::move(credentials_generated_cb));
}
}
::nearby::internal::Metadata GetLocalDeviceMetadata() override {
return metadata_;
}
private:
struct SubscriberKey {
CredentialSelector credential_selector;
@@ -185,6 +204,7 @@ class CredentialManagerImpl : public CredentialManager {
ABSL_GUARDED_BY(*executor_);
SingleThreadExecutor* executor_;
std::unique_ptr<nearby::CredentialStorageImpl> credential_storage_ptr_;
Metadata metadata_;
};
} // namespace presence