Stop generating selected contacts certs.

PiperOrigin-RevId: 742919089
This commit is contained in:
Francis Tsui
2025-04-01 18:48:39 -07:00
committed by Copybara-Service
parent 5faaac3565
commit 8f52d4129a
7 changed files with 35 additions and 65 deletions
@@ -85,9 +85,8 @@ using ::nearby::sharing::proto::PublicCertificate;
constexpr char kDeviceIdPrefix[] = "users/me/devices/";
constexpr std::array<DeviceVisibility, 3> kVisibilities = {
constexpr std::array<DeviceVisibility, 2> 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) {
@@ -257,14 +257,12 @@ class NearbyShareCertificateManagerImplTest
// and self-share
std::vector<NearbySharePrivateCertificate> 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,
@@ -362,9 +362,16 @@ NearbyShareCertificateStorageImpl::GetPrivateCertificates() const {
for (const PrivateCertificateData& cert_data : list) {
std::optional<NearbySharePrivateCertificate> 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;
}
@@ -757,41 +757,40 @@ TEST_F(NearbyShareCertificateStorageImplTest,
std::vector<NearbySharePrivateCertificate> certs_all_contacts =
CreatePrivateCertificates(
3, DeviceVisibility::DEVICE_VISIBILITY_ALL_CONTACTS);
std::vector<NearbySharePrivateCertificate> certs_selected_contacts =
CreatePrivateCertificates(
3, DeviceVisibility::DEVICE_VISIBILITY_SELECTED_CONTACTS);
std::vector<NearbySharePrivateCertificate> certs_self =
CreatePrivateCertificates(3,
DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE);
std::vector<NearbySharePrivateCertificate> 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());
@@ -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(
-2
View File
@@ -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()));
+1 -1
View File
@@ -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.