diff --git a/sharing/certificates/nearby_share_certificate_manager_impl.cc b/sharing/certificates/nearby_share_certificate_manager_impl.cc index dfb0027c..5c9c4c53 100644 --- a/sharing/certificates/nearby_share_certificate_manager_impl.cc +++ b/sharing/certificates/nearby_share_certificate_manager_impl.cc @@ -85,9 +85,8 @@ using ::nearby::sharing::proto::PublicCertificate; constexpr char kDeviceIdPrefix[] = "users/me/devices/"; -constexpr std::array kVisibilities = { +constexpr std::array kVisibilities = { DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS, - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS, DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE, }; @@ -801,11 +800,7 @@ void NearbyShareCertificateManagerImpl::PrivateCertificateRefresh( << "Creating " << kNearbyShareNumPrivateCertificates - num_valid_certs[DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS] - << " all-contacts visibility and " - << kNearbyShareNumPrivateCertificates - - num_valid_certs - [DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS] - << " selected-contacts visibility private certificates."; + << " all-contacts visibility."; for (DeviceVisibility visibility : kVisibilities) { while (num_valid_certs[visibility] < kNearbyShareNumPrivateCertificates) { diff --git a/sharing/certificates/nearby_share_certificate_manager_impl_test.cc b/sharing/certificates/nearby_share_certificate_manager_impl_test.cc index d345b4e0..a9cb2070 100644 --- a/sharing/certificates/nearby_share_certificate_manager_impl_test.cc +++ b/sharing/certificates/nearby_share_certificate_manager_impl_test.cc @@ -257,14 +257,12 @@ class NearbyShareCertificateManagerImplTest // and self-share std::vector certs = *cert_store_->GetPrivateCertificates(); - EXPECT_EQ(3 * kNearbyShareNumPrivateCertificates, certs.size()); + EXPECT_EQ(2 * kNearbyShareNumPrivateCertificates, certs.size()); absl::Time min_not_before_all_contacts = absl::InfiniteFuture(); - absl::Time min_not_before_selected_contacts = absl::InfiniteFuture(); absl::Time min_not_before_self_share = absl::InfiniteFuture(); absl::Time max_not_after_all_contacts = absl::InfinitePast(); - absl::Time max_not_after_selected_contacts = absl::InfinitePast(); absl::Time max_not_after_self_share = absl::InfinitePast(); for (const auto& cert : certs) { @@ -277,12 +275,6 @@ class NearbyShareCertificateManagerImplTest max_not_after_all_contacts = std::max(max_not_after_all_contacts, cert.not_after()); break; - case DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS: - min_not_before_selected_contacts = - std::min(min_not_before_selected_contacts, cert.not_before()); - max_not_after_selected_contacts = - std::max(max_not_after_selected_contacts, cert.not_after()); - break; case DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE: min_not_before_self_share = std::min(min_not_before_self_share, cert.not_before()); @@ -303,10 +295,9 @@ class NearbyShareCertificateManagerImplTest EXPECT_EQ(max_not_after_all_contacts - min_not_before_all_contacts, kNearbyShareNumPrivateCertificates * kNearbyShareCertificateValidityPeriod); - EXPECT_EQ( - max_not_after_selected_contacts - min_not_before_selected_contacts, - kNearbyShareNumPrivateCertificates * - kNearbyShareCertificateValidityPeriod); + EXPECT_EQ(max_not_after_self_share - min_not_before_self_share, + kNearbyShareNumPrivateCertificates * + kNearbyShareCertificateValidityPeriod); } void RunUpload(bool success) { @@ -324,7 +315,7 @@ class NearbyShareCertificateManagerImplTest EXPECT_EQ(local_device_data_manager_->upload_certificates_calls() .back() .certificates.size(), - 3 * kNearbyShareNumPrivateCertificates); + 2 * kNearbyShareNumPrivateCertificates); EXPECT_EQ(upload_scheduler_->handled_results().size(), initial_num_handled_results + 1); @@ -346,7 +337,7 @@ class NearbyShareCertificateManagerImplTest EXPECT_EQ(local_device_data_manager_->publish_device_calls() .back() .certificates.size(), - 3 * kNearbyShareNumPrivateCertificates); + 2 * kNearbyShareNumPrivateCertificates); EXPECT_EQ(upload_scheduler_->handled_results().size(), initial_num_handled_results + 1); @@ -506,10 +497,8 @@ class NearbyShareCertificateManagerImplTest void PopulatePrivateCertificates() { private_certificates_.clear(); const auto& metadata = GetNearbyShareTestMetadata(); - for (auto visibility : - {DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS, - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS, - DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE}) { + for (auto visibility : {DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS, + DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE}) { private_certificates_.emplace_back(visibility, t0, metadata); private_certificates_.emplace_back( visibility, t0 + kNearbyShareCertificateValidityPeriod, metadata); @@ -572,8 +561,6 @@ TEST_F(NearbyShareCertificateManagerImplTest, cert_store_->ReplacePrivateCertificates({}); EXPECT_FALSE(cert_manager_->EncryptPrivateCertificateMetadataKey( DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS)); - EXPECT_FALSE(cert_manager_->EncryptPrivateCertificateMetadataKey( - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS)); // Set up valid all-contacts visibility certificate. NearbySharePrivateCertificate private_certificate = @@ -596,8 +583,6 @@ TEST_F(NearbyShareCertificateManagerImplTest, encrypted_metadata_key->encrypted_key()); EXPECT_EQ(GetNearbyShareTestEncryptedMetadataKey().salt(), encrypted_metadata_key->salt()); - EXPECT_FALSE(cert_manager_->EncryptPrivateCertificateMetadataKey( - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS)); // Verify that storage is updated when salts are consumed during encryption. EXPECT_NE(cert_store_->GetPrivateCertificates()->at(0).ToCertificateData(), @@ -622,8 +607,6 @@ TEST_F(NearbyShareCertificateManagerImplTest, FastForward(kNearbyShareCertificateValidityPeriod); EXPECT_FALSE(cert_manager_->EncryptPrivateCertificateMetadataKey( DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS)); - EXPECT_FALSE(cert_manager_->EncryptPrivateCertificateMetadataKey( - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS)); } TEST_F(NearbyShareCertificateManagerImplTest, SignWithPrivateCertificate) { @@ -654,11 +637,6 @@ TEST_F(NearbyShareCertificateManagerImplTest, SignWithPrivateCertificate) { DeviceVisibility::DEVICE_VISIBILITY_EVERYONE, GetNearbyShareTestPayloadToSign()))); - // No selected-contact visibility certificate in storage. - EXPECT_FALSE(cert_manager_->SignWithPrivateCertificate( - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS, - GetNearbyShareTestPayloadToSign())); - // No certificates exist for hidden or unspecified visibility. EXPECT_FALSE(cert_manager_->SignWithPrivateCertificate( DeviceVisibility::DEVICE_VISIBILITY_HIDDEN, @@ -696,11 +674,6 @@ TEST_F(NearbyShareCertificateManagerImplTest, DeviceVisibility::DEVICE_VISIBILITY_EVERYONE, GetNearbyShareTestPayloadToSign())); - // No selected-contact visibility certificate in storage. - EXPECT_FALSE(cert_manager_->HashAuthenticationTokenWithPrivateCertificate( - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS, - GetNearbyShareTestPayloadToSign())); - // No certificates exist for hidden or unspecified visibility. EXPECT_FALSE(cert_manager_->HashAuthenticationTokenWithPrivateCertificate( DeviceVisibility::DEVICE_VISIBILITY_HIDDEN, @@ -850,7 +823,7 @@ TEST_F(NearbyShareCertificateManagerImplTest, EXPECT_EQ(local_device_data_manager_->publish_device_calls() .back() .certificates.size(), - 3 * kNearbyShareNumPrivateCertificates); + 2 * kNearbyShareNumPrivateCertificates); } TEST_F(NearbyShareCertificateManagerImplTest, @@ -899,7 +872,7 @@ TEST_F(NearbyShareCertificateManagerImplTest, ++num_expected_calls; EXPECT_TRUE(certs.empty()); } else { - EXPECT_EQ(certs.size(), 9u); + EXPECT_EQ(certs.size(), 6u); } EXPECT_EQ(num_expected_calls, diff --git a/sharing/certificates/nearby_share_certificate_storage_impl.cc b/sharing/certificates/nearby_share_certificate_storage_impl.cc index ee2eb3ab..2e3b6bd4 100644 --- a/sharing/certificates/nearby_share_certificate_storage_impl.cc +++ b/sharing/certificates/nearby_share_certificate_storage_impl.cc @@ -362,9 +362,16 @@ NearbyShareCertificateStorageImpl::GetPrivateCertificates() const { for (const PrivateCertificateData& cert_data : list) { std::optional cert( NearbySharePrivateCertificate::FromCertificateData(cert_data)); - if (!cert) return std::nullopt; - - certs.push_back(*std::move(cert)); + if (!cert) { + return std::nullopt; + } + // Skip selected contacts visibility certificates. They are obsolete. + if (cert->visibility() == + proto::DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE || + cert->visibility() == + proto::DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS) { + certs.push_back(*std::move(cert)); + } } return certs; } diff --git a/sharing/certificates/nearby_share_certificate_storage_impl_test.cc b/sharing/certificates/nearby_share_certificate_storage_impl_test.cc index e000d98f..854f7446 100644 --- a/sharing/certificates/nearby_share_certificate_storage_impl_test.cc +++ b/sharing/certificates/nearby_share_certificate_storage_impl_test.cc @@ -757,41 +757,40 @@ TEST_F(NearbyShareCertificateStorageImplTest, std::vector certs_all_contacts = CreatePrivateCertificates( 3, DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS); - std::vector certs_selected_contacts = - CreatePrivateCertificates( - 3, DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS); + std::vector certs_self = + CreatePrivateCertificates(3, + DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE); std::vector all_certs; - all_certs.reserve(certs_all_contacts.size() + certs_selected_contacts.size()); + all_certs.reserve(certs_all_contacts.size() + certs_self.size()); all_certs.insert(all_certs.end(), certs_all_contacts.begin(), certs_all_contacts.end()); - all_certs.insert(all_certs.end(), certs_selected_contacts.begin(), - certs_selected_contacts.end()); + all_certs.insert(all_certs.end(), certs_self.begin(), certs_self.end()); - // Remove all-contacts certs then selected-contacts certs. + // Remove all-contacts certs then remove self certs. { cert_store->ReplacePrivateCertificates(all_certs); cert_store->ClearPrivateCertificatesOfVisibility( DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS); auto certs_after = cert_store->GetPrivateCertificates(); ASSERT_TRUE(certs_after.has_value()); - ASSERT_EQ(certs_selected_contacts.size(), certs_after->size()); - for (size_t i = 0; i < certs_selected_contacts.size(); ++i) { - EXPECT_EQ(certs_selected_contacts[i].ToCertificateData(), + ASSERT_EQ(certs_self.size(), certs_after->size()); + for (size_t i = 0; i < certs_self.size(); ++i) { + EXPECT_EQ(certs_self[i].ToCertificateData(), (*certs_after)[i].ToCertificateData()); } cert_store->ClearPrivateCertificatesOfVisibility( - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS); + DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE); certs_after = cert_store->GetPrivateCertificates(); ASSERT_TRUE(certs_after.has_value()); EXPECT_EQ(certs_after->size(), 0u); } - // Remove selected-contacts certs then all-contacts certs. + // Remove self certs then remove all-contacts certs. { cert_store->ReplacePrivateCertificates(all_certs); cert_store->ClearPrivateCertificatesOfVisibility( - DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS); + DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE); auto certs_after = cert_store->GetPrivateCertificates(); ASSERT_TRUE(certs_after.has_value()); ASSERT_EQ(certs_all_contacts.size(), certs_after->size()); diff --git a/sharing/certificates/nearby_share_private_certificate.cc b/sharing/certificates/nearby_share_private_certificate.cc index a545a46c..a2b83eab 100644 --- a/sharing/certificates/nearby_share_private_certificate.cc +++ b/sharing/certificates/nearby_share_private_certificate.cc @@ -297,8 +297,6 @@ NearbySharePrivateCertificate::ToPublicCertificate() const { ToJavaTime(not_before_ - not_before_offset) / 1000); public_certificate.mutable_end_time()->set_seconds( ToJavaTime(not_after_ + not_after_offset) / 1000); - public_certificate.set_for_selected_contacts( - visibility_ == DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS); public_certificate.set_metadata_encryption_key(std::string( metadata_encryption_key_.begin(), metadata_encryption_key_.end())); public_certificate.set_encrypted_metadata_bytes(std::string( diff --git a/sharing/certificates/test_util.cc b/sharing/certificates/test_util.cc index c85568a1..84ff0121 100644 --- a/sharing/certificates/test_util.cc +++ b/sharing/certificates/test_util.cc @@ -313,8 +313,6 @@ nearby::sharing::proto::PublicCertificate GetNearbyShareTestPublicCertificate( ToJavaTime(not_before + kNearbyShareCertificateValidityPeriod + GetNearbyShareTestValidityOffset()) / 1000); - cert.set_for_selected_contacts( - visibility == DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS); cert.set_metadata_encryption_key( std::string(GetNearbyShareTestMetadataEncryptionKey().begin(), GetNearbyShareTestMetadataEncryptionKey().end())); diff --git a/sharing/proto/rpc_resources.proto b/sharing/proto/rpc_resources.proto index 2f5a792b..59c9d756 100644 --- a/sharing/proto/rpc_resources.proto +++ b/sharing/proto/rpc_resources.proto @@ -47,7 +47,7 @@ message PublicCertificate { Timestamp end_time = 5; // Indicates if this public certificate is only for selected contacts. - bool for_selected_contacts = 6; + bool for_selected_contacts = 6 [deprecated = true]; // This aes key is uploaded from device to server, but not returned to device. // It is only public to the server, for encrypting personal info metadata.