diff --git a/internal/platform/BUILD b/internal/platform/BUILD index b7dec5aa..4636b237 100644 --- a/internal/platform/BUILD +++ b/internal/platform/BUILD @@ -473,6 +473,7 @@ cc_test( "//proto:connections_enums_cc_proto", "@com_github_protobuf_matchers//protobuf-matchers", "@com_google_absl//absl/status", + "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/synchronization", "@com_google_absl//absl/time", diff --git a/internal/platform/credential_storage_impl_test.cc b/internal/platform/credential_storage_impl_test.cc index 7a54f1b6..3089c046 100644 --- a/internal/platform/credential_storage_impl_test.cc +++ b/internal/platform/credential_storage_impl_test.cc @@ -14,10 +14,7 @@ #include "internal/platform/credential_storage_impl.h" -#include -#include #include -#include #include #include @@ -25,6 +22,7 @@ #include "protobuf-matchers/protocol-buffer-matchers.h" #include "gtest/gtest.h" #include "absl/status/status.h" +#include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "internal/platform/implementation/credential_callbacks.h" #include "internal/proto/credential.pb.h" @@ -70,9 +68,7 @@ std::vector BuildPrivateCreds(absl::string_view secret_id) { CreateLocalCredential(secret_id, IdentityType::IDENTITY_TYPE_PRIVATE_GROUP), CreateLocalCredential(secret_id, - IdentityType::IDENTITY_TYPE_CONTACTS_GROUP), - CreateLocalCredential(secret_id, - IdentityType::IDENTITY_TYPE_PROVISIONED)}; + IdentityType::IDENTITY_TYPE_CONTACTS_GROUP)}; return private_credentials; } @@ -81,9 +77,7 @@ std::vector BuildPublicCreds(absl::string_view secret_id) { CreatePublicCredential(secret_id, IdentityType::IDENTITY_TYPE_PRIVATE_GROUP), CreatePublicCredential(secret_id, - IdentityType::IDENTITY_TYPE_CONTACTS_GROUP), - CreatePublicCredential(secret_id, - IdentityType::IDENTITY_TYPE_PROVISIONED)}; + IdentityType::IDENTITY_TYPE_CONTACTS_GROUP)}; return public_credentials; } @@ -510,8 +504,7 @@ TEST_P(IdentityFilterTest, FilterPublicCredentialsFailsWhenNoCredentialsMatch) { INSTANTIATE_TEST_SUITE_P( CredentialStorageImplTest, IdentityFilterTest, testing::Values(IdentityType::IDENTITY_TYPE_PRIVATE_GROUP, - IdentityType::IDENTITY_TYPE_CONTACTS_GROUP, - IdentityType::IDENTITY_TYPE_PROVISIONED)); + IdentityType::IDENTITY_TYPE_CONTACTS_GROUP)); } // namespace } // namespace nearby diff --git a/internal/proto/credential.proto b/internal/proto/credential.proto index 2dd27b1c..ec035248 100644 --- a/internal/proto/credential.proto +++ b/internal/proto/credential.proto @@ -29,7 +29,6 @@ enum IdentityType { IDENTITY_TYPE_PRIVATE_GROUP = 1; IDENTITY_TYPE_CONTACTS_GROUP = 2; IDENTITY_TYPE_PUBLIC = 3; - IDENTITY_TYPE_PROVISIONED = 4; } // LINT.ThenChange(//depot/google3/google/internal/location/nearby/presence/v1/nearby_resources.proto:IdentityType) // LINT.IfChange(CredentialType) diff --git a/presence/credential_test.cc b/presence/credential_test.cc index 7c7f9f0f..cfaa00d0 100644 --- a/presence/credential_test.cc +++ b/presence/credential_test.cc @@ -28,7 +28,6 @@ namespace { using ::nearby::internal::LocalCredential; using ::nearby::internal::SharedCredential; using ::nearby::internal::IdentityType::IDENTITY_TYPE_PRIVATE_GROUP; -using ::nearby::internal::IdentityType::IDENTITY_TYPE_PROVISIONED; using ::protobuf_matchers::EqualsProto; @@ -59,7 +58,7 @@ TEST(CredentialsTest, InitLocalCredential) { TEST(CredentialsTest, CopyLocalCredential) { LocalCredential pc1 = {}; - pc1.set_identity_type(IDENTITY_TYPE_PROVISIONED); + pc1.set_identity_type(IDENTITY_TYPE_PRIVATE_GROUP); auto salts = pc1.mutable_consumed_salts(); salts->insert(std::pair(15, true)); LocalCredential pc1_copy = {pc1}; @@ -68,7 +67,7 @@ TEST(CredentialsTest, CopyLocalCredential) { TEST(CredentialsTest, CopySharedCredential) { SharedCredential pc1 = {}; - pc1.set_identity_type(IDENTITY_TYPE_PROVISIONED); + pc1.set_identity_type(IDENTITY_TYPE_PRIVATE_GROUP); for (const uint8_t byte : nearby::Uuid().data()) { pc1.mutable_secret_id()->push_back(byte); } diff --git a/presence/data_element.h b/presence/data_element.h index 31b97c40..e39e8a39 100644 --- a/presence/data_element.h +++ b/presence/data_element.h @@ -48,7 +48,6 @@ class DataElement { static constexpr int kPrivateGroupIdentityFieldType = 1; static constexpr int kContactsGroupIdentityFieldType = 2; static constexpr int kPublicIdentityFieldType = 3; - static constexpr int kProvisionedIdentityFieldType = 4; static constexpr int kTxPowerFieldType = 5; static constexpr int kActionFieldType = 6; static constexpr int kModelIdFieldType = 7; diff --git a/presence/implementation/advertisement_decoder_impl.cc b/presence/implementation/advertisement_decoder_impl.cc index a016215b..03a865a9 100644 --- a/presence/implementation/advertisement_decoder_impl.cc +++ b/presence/implementation/advertisement_decoder_impl.cc @@ -64,7 +64,6 @@ bool IsDataElementAllowed(uint8_t header) { case DataElement::kPublicIdentityFieldType: return length == 0; case DataElement::kPrivateGroupIdentityFieldType: - case DataElement::kProvisionedIdentityFieldType: case DataElement::kContactsGroupIdentityFieldType: return length >= 2 && length <= 6; case DataElement::kTxPowerFieldType: @@ -88,8 +87,7 @@ bool IsDataElementAllowed(uint8_t header) { bool IsEncryptedIdentity(int data_type) { return data_type == DataElement::kPrivateGroupIdentityFieldType || - data_type == DataElement::kContactsGroupIdentityFieldType || - data_type == DataElement::kProvisionedIdentityFieldType; + data_type == DataElement::kContactsGroupIdentityFieldType; } bool IsIdentity(int data_type) { @@ -103,8 +101,6 @@ internal::IdentityType GetIdentityType(int data_type) { return internal::IDENTITY_TYPE_PRIVATE_GROUP; case DataElement::kContactsGroupIdentityFieldType: return internal::IDENTITY_TYPE_CONTACTS_GROUP; - case DataElement::kProvisionedIdentityFieldType: - return internal::IDENTITY_TYPE_PROVISIONED; case DataElement::kPublicIdentityFieldType: return internal::IDENTITY_TYPE_PUBLIC; } diff --git a/presence/implementation/advertisement_decoder_test.cc b/presence/implementation/advertisement_decoder_test.cc index ae164844..2beb037d 100644 --- a/presence/implementation/advertisement_decoder_test.cc +++ b/presence/implementation/advertisement_decoder_test.cc @@ -47,10 +47,11 @@ constexpr absl::string_view kAccountName = "test account"; ScanRequest GetScanRequest() { return {.account_name = std::string(kAccountName), - .identity_types = {IdentityType::IDENTITY_TYPE_PRIVATE_GROUP, - IdentityType::IDENTITY_TYPE_CONTACTS_GROUP, - IdentityType::IDENTITY_TYPE_PUBLIC, - IdentityType::IDENTITY_TYPE_PROVISIONED}}; + .identity_types = { + IdentityType::IDENTITY_TYPE_PRIVATE_GROUP, + IdentityType::IDENTITY_TYPE_CONTACTS_GROUP, + IdentityType::IDENTITY_TYPE_PUBLIC, + }}; } ScanRequest GetScanRequest(std::vector credentials) { @@ -61,7 +62,6 @@ ScanRequest GetScanRequest(std::vector credentials) { .AddIdentityType(IdentityType::IDENTITY_TYPE_PRIVATE_GROUP) .AddIdentityType(IdentityType::IDENTITY_TYPE_CONTACTS_GROUP) .AddIdentityType(IdentityType::IDENTITY_TYPE_PUBLIC) - .AddIdentityType(IdentityType::IDENTITY_TYPE_PROVISIONED) .Build(); } @@ -129,58 +129,6 @@ TEST(AdvertisementDecoderImpl, absl::HexStringToBytes("08")))); } -TEST(AdvertisementDecoderImpl, DecodeBaseNpTrustedAdvertisement) { - std::string salt = "AB"; - ByteArray metadata_key( - {205, 104, 63, 225, 161, 209, 248, 70, 84, 61, 10, 19, 212, 174}); - absl::flat_hash_map> - credentials; - credentials[IdentityType::IDENTITY_TYPE_CONTACTS_GROUP].push_back( - GetPublicCredential()); - AdvertisementDecoderImpl decoder(&credentials); - - absl::StatusOr result = decoder.DecodeAdvertisement( - absl::HexStringToBytes("0052414257a35c020f1c547d7e169303196d75da7118ba")); - ASSERT_OK(result); - EXPECT_EQ(result->metadata_key, metadata_key.AsStringView()); - EXPECT_EQ(result->identity_type, IdentityType::IDENTITY_TYPE_CONTACTS_GROUP); - EXPECT_THAT( - result->data_elements, - UnorderedElementsAre(DataElement(DataElement::kSaltFieldType, salt), - DataElement(DataElement::kTxPowerFieldType, - absl::HexStringToBytes("05")), - DataElement(DataElement::kActionFieldType, - absl::HexStringToBytes("0c")), - DataElement(DataElement::kActionFieldType, - absl::HexStringToBytes("08")))); -} - -TEST(AdvertisementDecoderImpl, DecodeBaseNpProvisionedAdvertisement) { - std::string salt = "AB"; - ByteArray metadata_key( - {205, 104, 63, 225, 161, 209, 248, 70, 84, 61, 10, 19, 212, 174}); - absl::flat_hash_map> - credentials; - credentials[IdentityType::IDENTITY_TYPE_PROVISIONED].push_back( - GetPublicCredential()); - AdvertisementDecoderImpl decoder(&credentials); - - absl::StatusOr result = decoder.DecodeAdvertisement( - absl::HexStringToBytes("0054414257a35c020f1c547d7e169303196d75da7118ba")); - ASSERT_OK(result); - EXPECT_EQ(result->metadata_key, metadata_key.AsStringView()); - EXPECT_EQ(result->identity_type, IdentityType::IDENTITY_TYPE_PROVISIONED); - EXPECT_THAT( - result->data_elements, - UnorderedElementsAre(DataElement(DataElement::kSaltFieldType, salt), - DataElement(DataElement::kTxPowerFieldType, - absl::HexStringToBytes("05")), - DataElement(DataElement::kActionFieldType, - absl::HexStringToBytes("0c")), - DataElement(DataElement::kActionFieldType, - absl::HexStringToBytes("08")))); -} - TEST(AdvertisementDecoderImpl, InvalidEncryptedContent) { std::string salt = "AB"; ByteArray metadata_key( @@ -252,20 +200,6 @@ TEST(AdvertisementDecoderImpl, DataElement(DataElement(ActionBit::kActiveUnlockAction)))); } -TEST(AdvertisementDecoderImpl, DecodeEddystone) { - AdvertisementDecoderImpl decoder; - std::string eddystone_id = - absl::HexStringToBytes("A0A1A2A3A4A5A6A7A8A9B0B1B2B3B4B5B6B7B8B9"); - - auto result = decoder.DecodeAdvertisement(absl::HexStringToBytes("0008") + - eddystone_id); - - EXPECT_OK(result); - EXPECT_THAT(result->data_elements, - ElementsAre(DataElement(DataElement::kEddystoneIdFieldType, - eddystone_id))); -} - TEST(AdvertisementDecoderImpl, UnsupportedDataElement) { std::string valid_header_and_salt = absl::HexStringToBytes("00204142"); AdvertisementDecoderImpl decoder; diff --git a/presence/implementation/advertisement_factory.cc b/presence/implementation/advertisement_factory.cc index 2eebe3f6..2bdb5d13 100644 --- a/presence/implementation/advertisement_factory.cc +++ b/presence/implementation/advertisement_factory.cc @@ -14,13 +14,21 @@ #include "presence/implementation/advertisement_factory.h" +#include +#include #include #include #include +#include "absl/base/attributes.h" #include "absl/status/status.h" +#include "absl/strings/escaping.h" +#include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" +#include "absl/strings/string_view.h" +#include "absl/types/optional.h" #include "absl/types/variant.h" +#include "internal/platform/implementation/credential_callbacks.h" #include "internal/platform/logging.h" #include "internal/platform/uuid.h" #include "internal/proto/credential.pb.h" @@ -71,11 +79,9 @@ uint8_t GetIdentityFieldType(IdentityType type) { case IdentityType::IDENTITY_TYPE_CONTACTS_GROUP: return DataElement::kContactsGroupIdentityFieldType; case IdentityType::IDENTITY_TYPE_PUBLIC: - return DataElement::kPublicIdentityFieldType; - case IdentityType::IDENTITY_TYPE_PROVISIONED: ABSL_FALLTHROUGH_INTENDED; default: - return DataElement::kProvisionedIdentityFieldType; + return DataElement::kPublicIdentityFieldType; } } @@ -95,8 +101,7 @@ std::string SerializeAction(const Action& action) { bool RequiresCredentials(IdentityType identity_type) { return identity_type == IdentityType::IDENTITY_TYPE_PRIVATE_GROUP || - identity_type == IdentityType::IDENTITY_TYPE_CONTACTS_GROUP || - identity_type == IdentityType::IDENTITY_TYPE_PROVISIONED; + identity_type == IdentityType::IDENTITY_TYPE_CONTACTS_GROUP; } } // namespace diff --git a/presence/implementation/advertisement_factory_test.cc b/presence/implementation/advertisement_factory_test.cc index d95bacd2..8c2897f8 100644 --- a/presence/implementation/advertisement_factory_test.cc +++ b/presence/implementation/advertisement_factory_test.cc @@ -105,31 +105,6 @@ TEST(AdvertisementFactory, CreateAdvertisementFromTrustedIdentity) { "0052414257a35c020f1c547d7e169303196d75da7118ba"); } -TEST(AdvertisementFactory, CreateAdvertisementFromProvisionedIdentity) { - std::string account_name = "Test account"; - std::string salt = "AB"; - constexpr IdentityType kIdentity = IdentityType::IDENTITY_TYPE_PROVISIONED; - std::vector data_elements; - data_elements.emplace_back(ActionBit::kActiveUnlockAction); - data_elements.emplace_back(ActionBit::kPresenceManagerAction); - Action action = ActionFactory::CreateAction(data_elements); - BaseBroadcastRequest request = - BaseBroadcastRequest(BasePresenceRequestBuilder(kIdentity) - .SetAccountName(account_name) - .SetSalt(salt) - .SetTxPower(5) - .SetAction(action)); - - absl::StatusOr result = - AdvertisementFactory().CreateAdvertisement( - request, CreateLocalCredential(kIdentity)); - - ASSERT_OK(result); - EXPECT_FALSE(result->is_extended_advertisement); - EXPECT_EQ(absl::BytesToHexString(result->content), - "0054414257a35c020f1c547d7e169303196d75da7118ba"); -} - TEST(AdvertisementFactory, CreateAdvertisementFromPublicIdentity) { std::string salt = "AB"; constexpr IdentityType kIdentity = IdentityType::IDENTITY_TYPE_PUBLIC; diff --git a/presence/implementation/advertisement_filter_test.cc b/presence/implementation/advertisement_filter_test.cc index 7c83243c..ff3a1dfd 100644 --- a/presence/implementation/advertisement_filter_test.cc +++ b/presence/implementation/advertisement_filter_test.cc @@ -95,9 +95,9 @@ TEST(AdvertisementFilter, MatchesLegacyPresenceScanFilter) { TEST(AdvertisementFilter, EncryptedIdentityFilterIgnoresPublicIdentityAdvertisement) { AdvertisementFilter adv_filter( - {.identity_types = {internal::IdentityType::IDENTITY_TYPE_PRIVATE_GROUP, - internal::IdentityType::IDENTITY_TYPE_CONTACTS_GROUP, - internal::IdentityType::IDENTITY_TYPE_PROVISIONED}}); + {.identity_types = { + internal::IdentityType::IDENTITY_TYPE_PRIVATE_GROUP, + internal::IdentityType::IDENTITY_TYPE_CONTACTS_GROUP}}); EXPECT_FALSE(adv_filter.MatchesScanFilter( {.identity_type = internal::IdentityType::IDENTITY_TYPE_PUBLIC})); diff --git a/presence/implementation/scan_manager.cc b/presence/implementation/scan_manager.cc index 7bc7feae..112906ab 100644 --- a/presence/implementation/scan_manager.cc +++ b/presence/implementation/scan_manager.cc @@ -145,8 +145,7 @@ std::vector GetCredentialSelectors( std::vector all_types = { nearby::internal::IdentityType::IDENTITY_TYPE_PRIVATE_GROUP, nearby::internal::IdentityType::IDENTITY_TYPE_CONTACTS_GROUP, - nearby::internal::IdentityType::IDENTITY_TYPE_PUBLIC, - nearby::internal::IdentityType::IDENTITY_TYPE_PROVISIONED}; + nearby::internal::IdentityType::IDENTITY_TYPE_PUBLIC}; std::vector selectors; for (auto identity_type : (scan_request.identity_types.empty() ? all_types