mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 14:46:12 -04:00
Stop generating selected contacts certs.
PiperOrigin-RevId: 742919089
This commit is contained in:
committed by
Copybara-Service
parent
5faaac3565
commit
8f52d4129a
@@ -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(
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user