[NearbyPresence] Use LocalCredential id field, instead of secret_id.
`secret_id` is no longer populated as of cl/630558485 -- now only `id` is populated. Test: Unit tests and manually tested in private identity prototype on DUT. Change-Id: Ia1ab0fc7ca2106b1ba397dcfff7dfdbe82822c5b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5526419 Reviewed-by: Juliet Lévesque <julietlevesque@google.com> Commit-Queue: Ryan Hansberry <hansberry@chromium.org> Cr-Commit-Position: refs/heads/main@{#1298801}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
1629a4b9d5
commit
cce4909a34
chrome/browser/ash/nearby/presence/credential_storage
chromeos/ash/components/nearby/presence/credentials
@@ -201,15 +201,16 @@ void NearbyPresenceCredentialStorage::UpdateLocalCredential(
|
||||
// create a vector with a single pair in-line using an initializer list.
|
||||
auto credential_pair_to_update = std::make_unique<std::vector<
|
||||
std::pair<std::string, ::nearby::internal::LocalCredential>>>();
|
||||
credential_pair_to_update->emplace_back(std::make_pair(
|
||||
local_credential_proto.secret_id(), local_credential_proto));
|
||||
std::string id = base::NumberToString(local_credential_proto.id());
|
||||
credential_pair_to_update->emplace_back(
|
||||
std::make_pair(id, local_credential_proto));
|
||||
|
||||
// Only match the credential being updated.
|
||||
leveldb_proto::KeyFilter update_filter = base::BindRepeating(
|
||||
[](const std::string& key, const std::string& target_key) {
|
||||
return key == target_key;
|
||||
},
|
||||
local_credential_proto.secret_id());
|
||||
id);
|
||||
|
||||
// TODO(b/333701895): Verify that this works as expected during a broadcast.
|
||||
private_db_->UpdateEntriesWithRemoveFilter(
|
||||
@@ -347,9 +348,10 @@ void NearbyPresenceCredentialStorage::OnLocalPublicCredentialsSaved(
|
||||
std::pair<std::string, ::nearby::internal::LocalCredential>>>();
|
||||
base::flat_set<std::string> keys_to_not_delete;
|
||||
for (const auto& local_credential : proto_local_credentials) {
|
||||
std::string id = base::NumberToString(local_credential.id());
|
||||
credential_pairs_to_save->emplace_back(
|
||||
std::make_pair(local_credential.secret_id(), local_credential));
|
||||
keys_to_not_delete.insert(local_credential.secret_id());
|
||||
std::make_pair(id, local_credential));
|
||||
keys_to_not_delete.insert(id);
|
||||
}
|
||||
|
||||
private_db_->UpdateEntriesWithRemoveFilter(
|
||||
|
167
chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc
167
chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc
@@ -7,6 +7,7 @@
|
||||
#include <optional>
|
||||
|
||||
#include "base/memory/raw_ptr.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/test/bind.h"
|
||||
#include "base/test/metrics/histogram_tester.h"
|
||||
#include "base/test/task_environment.h"
|
||||
@@ -19,14 +20,12 @@
|
||||
|
||||
namespace {
|
||||
|
||||
const std::vector<uint8_t> kSecretId_Local_1 = {0x11, 0x12, 0x13,
|
||||
0x14, 0x15, 0x16};
|
||||
constexpr int64_t kId_1 = 111;
|
||||
const std::vector<uint8_t> kMetadataEncryptionKeyV0_1 = {
|
||||
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
|
||||
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e};
|
||||
constexpr int64_t kStartTimeMillis_1 = 255486129307;
|
||||
constexpr int64_t kEndtimeMillis_1 = 265486239507;
|
||||
constexpr int64_t kSharedCredentialId_1 = 111;
|
||||
constexpr int64_t kEndTimeMillis_1 = 265486239507;
|
||||
const std::vector<uint8_t> kKeySeed_1 = {
|
||||
0x21, 0x22, 0x23, 0x24, 0x2A, 0x21, 0x27, 0x28, 0x29, 0x2A, 0x2B,
|
||||
0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x37, 0x32, 0x33, 0x34, 0x35, 0x36,
|
||||
@@ -63,16 +62,13 @@ const std::vector<uint8_t> kIdentityTokenV1_1 = {
|
||||
const base::flat_map<uint32_t, bool> kConsumedSalts_1 = {{0xb412, true},
|
||||
{0x34b2, false},
|
||||
{0x5171, false}};
|
||||
constexpr int64_t kLocalCredentialId_1 = 99;
|
||||
|
||||
const std::vector<uint8_t> kSecretId_Local_2 = {0xA1, 0xA2, 0xA3,
|
||||
0xA4, 0xA5, 0xA6};
|
||||
constexpr int64_t kId_2 = 222;
|
||||
const std::vector<uint8_t> kMetadataEncryptionKeyV0_2 = {
|
||||
0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3,
|
||||
0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA};
|
||||
constexpr int64_t kStartTimeMillis_2 = 255486129307;
|
||||
constexpr int64_t kEndtimeMillis_2 = 265486239725;
|
||||
constexpr int64_t kSharedCredentialId_2 = 222;
|
||||
constexpr int64_t kEndTimeMillis_2 = 265486239725;
|
||||
const std::vector<uint8_t> kKeySeed_2 = {
|
||||
0x21, 0x22, 0x23, 0x24, 0x2A, 0x24, 0x27, 0x28, 0x29, 0x2A, 0x2B,
|
||||
0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x32, 0x31, 0x23, 0x14, 0x12, 0x21,
|
||||
@@ -109,16 +105,13 @@ const std::vector<uint8_t> kIdentityTokenV1_2 = {
|
||||
const base::flat_map<uint32_t, bool> kConsumedSalts_2 = {{0xb412, false},
|
||||
{0x34b2, true},
|
||||
{0x5171, false}};
|
||||
constexpr int64_t kLocalCredentialId_2 = 88;
|
||||
|
||||
const std::vector<uint8_t> kSecretId_Local_3 = {0x04, 0x05, 0x06,
|
||||
0x07, 0x08, 0x09};
|
||||
constexpr int64_t kId_3 = 333;
|
||||
const std::vector<uint8_t> kMetadataEncryptionKeyV0_3 = {
|
||||
0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13,
|
||||
0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A};
|
||||
constexpr int64_t kStartTimeMillis_3 = 255486129307;
|
||||
constexpr int64_t kEndtimeMillis_3 = 263485225725;
|
||||
constexpr int64_t kSharedCredentialId_3 = 333;
|
||||
constexpr int64_t kEndTimeMillis_3 = 263485225725;
|
||||
const std::vector<uint8_t> kKeySeed_3 = {
|
||||
0x21, 0x22, 0x23, 0x24, 0x2A, 0x22, 0x27, 0x21, 0x29, 0x2A, 0x2B,
|
||||
0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x31, 0x22, 0x14, 0x12, 0x21,
|
||||
@@ -155,7 +148,6 @@ const std::vector<uint8_t> kIdentityTokenV1_3 = {
|
||||
const base::flat_map<uint32_t, bool> kConsumedSalts_3 = {{0xb402, false},
|
||||
{0x3202, false},
|
||||
{0x5b71, true}};
|
||||
constexpr int64_t kLocalCredentialId_3 = 77;
|
||||
|
||||
class TestNearbyPresenceCredentialStorage
|
||||
: public ash::nearby::presence::NearbyPresenceCredentialStorage {
|
||||
@@ -181,9 +173,10 @@ class TestNearbyPresenceCredentialStorage
|
||||
};
|
||||
|
||||
ash::nearby::presence::mojom::LocalCredentialPtr CreateLocalCredential(
|
||||
const std::vector<uint8_t>& secret_id,
|
||||
const int64_t id,
|
||||
const std::vector<uint8_t>& key_seed,
|
||||
const int start_time_millis,
|
||||
const int64_t start_time_millis,
|
||||
const int64_t end_time_millis,
|
||||
const std::vector<uint8_t>& metadata_encryption_key_v0,
|
||||
const std::string& advertisement_signing_key_certificate_alias,
|
||||
const std::vector<uint8_t>& advertisement_signing_key_data,
|
||||
@@ -192,32 +185,17 @@ ash::nearby::presence::mojom::LocalCredentialPtr CreateLocalCredential(
|
||||
const ash::nearby::presence::mojom::IdentityType identity_type,
|
||||
const base::flat_map<uint32_t, bool>& consumed_salts,
|
||||
const std::vector<uint8_t>& identity_token_v1,
|
||||
const int id,
|
||||
const std::string& signature_version) {
|
||||
auto local_credential = ash::nearby::presence::mojom::LocalCredential::New();
|
||||
|
||||
local_credential->secret_id = secret_id;
|
||||
local_credential->key_seed = key_seed;
|
||||
local_credential->start_time_millis = start_time_millis;
|
||||
local_credential->metadata_encryption_key_v0 = metadata_encryption_key_v0;
|
||||
local_credential->identity_type = identity_type;
|
||||
local_credential->consumed_salts = consumed_salts;
|
||||
local_credential->identity_token_v1 = identity_token_v1;
|
||||
local_credential->id = id;
|
||||
local_credential->signature_version = signature_version;
|
||||
|
||||
auto advertisement_key = ash::nearby::presence::mojom::PrivateKey::New();
|
||||
advertisement_key->certificate_alias =
|
||||
advertisement_signing_key_certificate_alias;
|
||||
advertisement_key->key = advertisement_signing_key_data;
|
||||
local_credential->advertisement_signing_key = std::move(advertisement_key);
|
||||
|
||||
auto connection_key = ash::nearby::presence::mojom::PrivateKey::New();
|
||||
connection_key->certificate_alias = connection_signing_key_certificate_alias;
|
||||
connection_key->key = connection_signing_key_data;
|
||||
local_credential->connection_signing_key = std::move(connection_key);
|
||||
|
||||
return local_credential;
|
||||
return ash::nearby::presence::mojom::LocalCredential::New(
|
||||
/*secret_id=*/std::vector<uint8_t>(), key_seed, start_time_millis,
|
||||
end_time_millis, metadata_encryption_key_v0,
|
||||
ash::nearby::presence::mojom::PrivateKey::New(
|
||||
advertisement_signing_key_certificate_alias,
|
||||
advertisement_signing_key_data),
|
||||
ash::nearby::presence::mojom::PrivateKey::New(
|
||||
connection_signing_key_certificate_alias,
|
||||
connection_signing_key_data),
|
||||
identity_type, consumed_salts, identity_token_v1, id, signature_version);
|
||||
}
|
||||
|
||||
ash::nearby::presence::mojom::SharedCredentialPtr CreateSharedCredential(
|
||||
@@ -330,36 +308,36 @@ class NearbyPresenceCredentialStorageTest : public testing::Test {
|
||||
public_credential_type) {
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice,
|
||||
kEncryptedMetadataBytesV1_1, kIdentityTokenShortSaltAdvHmacKeyV1_1,
|
||||
kSharedCredentialId_1, kDusi_1, kSignatureVersion_1,
|
||||
kId_1, kDusi_1, kSignatureVersion_1,
|
||||
kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_2, kStartTimeMillis_2, kEndtimeMillis_2,
|
||||
kKeySeed_2, kStartTimeMillis_2, kEndTimeMillis_2,
|
||||
kEncryptedMetadataBytesV0_2, kMetadataEncryptionTag_2,
|
||||
kConnectionSignatureVerificationKey_2,
|
||||
kAdvertisementSignatureVerificationKey_2,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_2,
|
||||
mojom::CredentialType::kCredentialTypeDevice,
|
||||
kEncryptedMetadataBytesV1_2, kIdentityTokenShortSaltAdvHmacKeyV1_2,
|
||||
kSharedCredentialId_2, kDusi_2, kSignatureVersion_2,
|
||||
kId_2, kDusi_2, kSignatureVersion_2,
|
||||
kIdentityTokenExtendedSaltAdvHmacKeyV1_2,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_2));
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_3, kStartTimeMillis_3, kEndtimeMillis_3,
|
||||
kKeySeed_3, kStartTimeMillis_3, kEndTimeMillis_3,
|
||||
kEncryptedMetadataBytesV0_3, kMetadataEncryptionTag_3,
|
||||
kConnectionSignatureVerificationKey_3,
|
||||
kAdvertisementSignatureVerificationKey_3,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_3,
|
||||
mojom::CredentialType::kCredentialTypeDevice,
|
||||
kEncryptedMetadataBytesV1_3, kIdentityTokenShortSaltAdvHmacKeyV1_3,
|
||||
kSharedCredentialId_3, kDusi_3, kSignatureVersion_3,
|
||||
kId_3, kDusi_3, kSignatureVersion_3,
|
||||
kIdentityTokenExtendedSaltAdvHmacKeyV1_3,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_3));
|
||||
|
||||
@@ -369,26 +347,26 @@ class NearbyPresenceCredentialStorageTest : public testing::Test {
|
||||
ash::nearby::presence::mojom::PublicCredentialType::
|
||||
kLocalPublicCredential) {
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_1, kKeySeed_1, kStartTimeMillis_1,
|
||||
kId_1, kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kMetadataEncryptionKeyV0_1, AdvertisementSigningKeyCertificateAlias_1,
|
||||
kAdvertisementPrivateKey_1, ConnectionSigningKeyCertificateAlias_1,
|
||||
kConnectionPrivateKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kConsumedSalts_1,
|
||||
kIdentityTokenV1_1, kLocalCredentialId_1, kSignatureVersion_1));
|
||||
kIdentityTokenV1_1, kSignatureVersion_1));
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_2, kKeySeed_2, kStartTimeMillis_2,
|
||||
kId_2, kKeySeed_2, kStartTimeMillis_2, kEndTimeMillis_2,
|
||||
kMetadataEncryptionKeyV0_2, AdvertisementSigningKeyCertificateAlias_2,
|
||||
kAdvertisementPrivateKey_2, ConnectionSigningKeyCertificateAlias_2,
|
||||
kConnectionPrivateKey_2,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kConsumedSalts_2,
|
||||
kIdentityTokenV1_2, kLocalCredentialId_2, kSignatureVersion_2));
|
||||
kIdentityTokenV1_2, kSignatureVersion_2));
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_3, kKeySeed_3, kStartTimeMillis_3,
|
||||
kId_3, kKeySeed_3, kStartTimeMillis_3, kEndTimeMillis_3,
|
||||
kMetadataEncryptionKeyV0_3, AdvertisementSigningKeyCertificateAlias_3,
|
||||
kAdvertisementPrivateKey_3, ConnectionSigningKeyCertificateAlias_3,
|
||||
kConnectionPrivateKey_3,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kConsumedSalts_3,
|
||||
kIdentityTokenV1_3, kLocalCredentialId_3, kSignatureVersion_3));
|
||||
kIdentityTokenV1_3, kSignatureVersion_3));
|
||||
}
|
||||
|
||||
SaveCredentialsWithExpectedResult(
|
||||
@@ -528,56 +506,53 @@ TEST_F(NearbyPresenceCredentialStorageTest, SaveCredentials_Local_Success) {
|
||||
|
||||
std::vector<mojom::LocalCredentialPtr> local_credentials;
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_1, kKeySeed_1, kStartTimeMillis_1,
|
||||
kId_1, kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kMetadataEncryptionKeyV0_1, AdvertisementSigningKeyCertificateAlias_1,
|
||||
kAdvertisementPrivateKey_1, ConnectionSigningKeyCertificateAlias_1,
|
||||
kConnectionPrivateKey_1, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kLocalCredentialId_1,
|
||||
kSignatureVersion_1));
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kSignatureVersion_1));
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_2, kKeySeed_2, kStartTimeMillis_2,
|
||||
kId_2, kKeySeed_2, kStartTimeMillis_2, kEndTimeMillis_2,
|
||||
kMetadataEncryptionKeyV0_2, AdvertisementSigningKeyCertificateAlias_2,
|
||||
kAdvertisementPrivateKey_2, ConnectionSigningKeyCertificateAlias_2,
|
||||
kConnectionPrivateKey_2, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_2, kIdentityTokenV1_2, kLocalCredentialId_2,
|
||||
kSignatureVersion_2));
|
||||
kConsumedSalts_2, kIdentityTokenV1_2, kSignatureVersion_2));
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_3, kKeySeed_3, kStartTimeMillis_3,
|
||||
kId_3, kKeySeed_3, kStartTimeMillis_3, kEndTimeMillis_3,
|
||||
kMetadataEncryptionKeyV0_3, AdvertisementSigningKeyCertificateAlias_3,
|
||||
kAdvertisementPrivateKey_3, ConnectionSigningKeyCertificateAlias_3,
|
||||
kConnectionPrivateKey_3, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_3, kIdentityTokenV1_3, kLocalCredentialId_3,
|
||||
kSignatureVersion_3));
|
||||
kConsumedSalts_3, kIdentityTokenV1_3, kSignatureVersion_3));
|
||||
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice, kEncryptedMetadataBytesV1_1,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_1, kSharedCredentialId_1, kDusi_1,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_1, kId_1, kDusi_1,
|
||||
kSignatureVersion_1, kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_2, kStartTimeMillis_2, kEndtimeMillis_2,
|
||||
kKeySeed_2, kStartTimeMillis_2, kEndTimeMillis_2,
|
||||
kEncryptedMetadataBytesV0_2, kMetadataEncryptionTag_2,
|
||||
kConnectionSignatureVerificationKey_2,
|
||||
kAdvertisementSignatureVerificationKey_2,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_2,
|
||||
mojom::CredentialType::kCredentialTypeDevice, kEncryptedMetadataBytesV1_2,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_2, kSharedCredentialId_2, kDusi_2,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_2, kId_2, kDusi_2,
|
||||
kSignatureVersion_2, kIdentityTokenExtendedSaltAdvHmacKeyV1_2,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_2));
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_3, kStartTimeMillis_3, kEndtimeMillis_3,
|
||||
kKeySeed_3, kStartTimeMillis_3, kEndTimeMillis_3,
|
||||
kEncryptedMetadataBytesV0_3, kMetadataEncryptionTag_3,
|
||||
kConnectionSignatureVerificationKey_3,
|
||||
kAdvertisementSignatureVerificationKey_3,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_3,
|
||||
mojom::CredentialType::kCredentialTypeDevice, kEncryptedMetadataBytesV1_3,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_3, kSharedCredentialId_3, kDusi_3,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_3, kId_3, kDusi_3,
|
||||
kSignatureVersion_3, kIdentityTokenExtendedSaltAdvHmacKeyV1_3,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_3));
|
||||
|
||||
@@ -614,22 +589,21 @@ TEST_F(NearbyPresenceCredentialStorageTest, SaveCredentials_Local_PublicFails) {
|
||||
|
||||
std::vector<mojom::LocalCredentialPtr> local_credentials;
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_1, kKeySeed_1, kStartTimeMillis_1,
|
||||
kId_1, kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kMetadataEncryptionKeyV0_1, AdvertisementSigningKeyCertificateAlias_1,
|
||||
kAdvertisementPrivateKey_1, ConnectionSigningKeyCertificateAlias_1,
|
||||
kConnectionPrivateKey_1, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kLocalCredentialId_1,
|
||||
kSignatureVersion_1));
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kSignatureVersion_1));
|
||||
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice, kEncryptedMetadataBytesV1_1,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_1, kSharedCredentialId_1, kDusi_1,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_1, kId_1, kDusi_1,
|
||||
kSignatureVersion_1, kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
|
||||
@@ -667,22 +641,21 @@ TEST_F(NearbyPresenceCredentialStorageTest,
|
||||
|
||||
std::vector<mojom::LocalCredentialPtr> local_credentials;
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_1, kKeySeed_1, kStartTimeMillis_1,
|
||||
kId_1, kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kMetadataEncryptionKeyV0_1, AdvertisementSigningKeyCertificateAlias_1,
|
||||
kAdvertisementPrivateKey_1, ConnectionSigningKeyCertificateAlias_1,
|
||||
kConnectionPrivateKey_1, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kLocalCredentialId_1,
|
||||
kSignatureVersion_1));
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kSignatureVersion_1));
|
||||
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice, kEncryptedMetadataBytesV1_1,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_1, kSharedCredentialId_1, kDusi_1,
|
||||
kIdentityTokenShortSaltAdvHmacKeyV1_1, kId_1, kDusi_1,
|
||||
kSignatureVersion_1, kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
|
||||
@@ -721,14 +694,14 @@ TEST_F(NearbyPresenceCredentialStorageTest, SaveCredentials_Remote_Success) {
|
||||
std::vector<mojom::LocalCredentialPtr> local_credentials;
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice,
|
||||
kEncryptedMetadataBytesV1_1, kIdentityTokenShortSaltAdvHmacKeyV1_1,
|
||||
kSharedCredentialId_1, kDusi_1, kSignatureVersion_1,
|
||||
kId_1, kDusi_1, kSignatureVersion_1,
|
||||
kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
|
||||
@@ -763,14 +736,14 @@ TEST_F(NearbyPresenceCredentialStorageTest,
|
||||
std::vector<mojom::LocalCredentialPtr> local_credentials;
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice,
|
||||
kEncryptedMetadataBytesV1_1, kIdentityTokenShortSaltAdvHmacKeyV1_1,
|
||||
kSharedCredentialId_1, kDusi_1, kSignatureVersion_1,
|
||||
kId_1, kDusi_1, kSignatureVersion_1,
|
||||
kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
|
||||
@@ -801,21 +774,20 @@ TEST_F(NearbyPresenceCredentialStorageTest,
|
||||
std::vector<mojom::LocalCredentialPtr> local_credentials;
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
local_credentials.emplace_back(CreateLocalCredential(
|
||||
kSecretId_Local_1, kKeySeed_1, kStartTimeMillis_1,
|
||||
kId_1, kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kMetadataEncryptionKeyV0_1, AdvertisementSigningKeyCertificateAlias_1,
|
||||
kAdvertisementPrivateKey_1, ConnectionSigningKeyCertificateAlias_1,
|
||||
kConnectionPrivateKey_1, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kLocalCredentialId_1,
|
||||
kSignatureVersion_1));
|
||||
kConsumedSalts_1, kIdentityTokenV1_1, kSignatureVersion_1));
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice,
|
||||
kEncryptedMetadataBytesV1_1, kIdentityTokenShortSaltAdvHmacKeyV1_1,
|
||||
kSharedCredentialId_1, kDusi_1, kSignatureVersion_1,
|
||||
kId_1, kDusi_1, kSignatureVersion_1,
|
||||
kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
|
||||
@@ -839,14 +811,14 @@ TEST_F(NearbyPresenceCredentialStorageTest,
|
||||
std::vector<mojom::LocalCredentialPtr> local_credentials;
|
||||
std::vector<mojom::SharedCredentialPtr> shared_credentials;
|
||||
shared_credentials.emplace_back(CreateSharedCredential(
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndtimeMillis_1,
|
||||
kKeySeed_1, kStartTimeMillis_1, kEndTimeMillis_1,
|
||||
kEncryptedMetadataBytesV0_1, kMetadataEncryptionTag_1,
|
||||
kConnectionSignatureVerificationKey_1,
|
||||
kAdvertisementSignatureVerificationKey_1,
|
||||
mojom::IdentityType::kIdentityTypePrivateGroup, kVersion_1,
|
||||
mojom::CredentialType::kCredentialTypeDevice,
|
||||
kEncryptedMetadataBytesV1_1, kIdentityTokenShortSaltAdvHmacKeyV1_1,
|
||||
kSharedCredentialId_1, kDusi_1, kSignatureVersion_1,
|
||||
kId_1, kDusi_1, kSignatureVersion_1,
|
||||
kIdentityTokenExtendedSaltAdvHmacKeyV1_1,
|
||||
kIdentityTokenSignedAdvHmacKeyV1_1));
|
||||
|
||||
@@ -1144,15 +1116,14 @@ TEST_F(NearbyPresenceCredentialStorageTest, UpdateLocalCredential_Success) {
|
||||
}
|
||||
|
||||
// Since the pre-population step populates credentials with each parameter
|
||||
// to the matching number (ie, _1 values are assigned to kSecretId_Local_1),
|
||||
// to the matching number (ie, _1 values are assigned to kId_1),
|
||||
// update the credential details for _1 to _2.
|
||||
auto local_credential_to_be_updated = CreateLocalCredential(
|
||||
kSecretId_Local_1, kKeySeed_2, kStartTimeMillis_2,
|
||||
kId_1, kKeySeed_2, kStartTimeMillis_2, kEndTimeMillis_2,
|
||||
kMetadataEncryptionKeyV0_2, AdvertisementSigningKeyCertificateAlias_2,
|
||||
kAdvertisementPrivateKey_2, ConnectionSigningKeyCertificateAlias_2,
|
||||
kConnectionPrivateKey_2, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_2, kIdentityTokenV1_2, kLocalCredentialId_2,
|
||||
kSignatureVersion_2);
|
||||
kConsumedSalts_2, kIdentityTokenV1_2, kSignatureVersion_2);
|
||||
|
||||
{
|
||||
base::RunLoop run_loop;
|
||||
@@ -1168,8 +1139,7 @@ TEST_F(NearbyPresenceCredentialStorageTest, UpdateLocalCredential_Success) {
|
||||
run_loop.Run();
|
||||
}
|
||||
|
||||
std::string secretId(kSecretId_Local_1.begin(), kSecretId_Local_1.end());
|
||||
auto it = private_db_entries_.find(secretId);
|
||||
auto it = private_db_entries_.find(base::NumberToString(kId_1));
|
||||
ASSERT_NE(it, private_db_entries_.end());
|
||||
auto updated_local_credential = it->second;
|
||||
|
||||
@@ -1198,12 +1168,11 @@ TEST_F(NearbyPresenceCredentialStorageTest, UpdateLocalCredential_Failure) {
|
||||
}
|
||||
|
||||
auto local_credential_to_be_updated = CreateLocalCredential(
|
||||
kSecretId_Local_1, kKeySeed_2, kStartTimeMillis_2,
|
||||
kId_1, kKeySeed_2, kStartTimeMillis_2, kEndTimeMillis_2,
|
||||
kMetadataEncryptionKeyV0_2, AdvertisementSigningKeyCertificateAlias_2,
|
||||
kAdvertisementPrivateKey_2, ConnectionSigningKeyCertificateAlias_2,
|
||||
kConnectionPrivateKey_2, mojom::IdentityType::kIdentityTypePrivateGroup,
|
||||
kConsumedSalts_2, kIdentityTokenV1_2, kLocalCredentialId_2,
|
||||
kSignatureVersion_2);
|
||||
kConsumedSalts_2, kIdentityTokenV1_2, kSignatureVersion_2);
|
||||
|
||||
{
|
||||
base::RunLoop run_loop;
|
||||
|
@@ -7,7 +7,7 @@
|
||||
#include "base/base64url.h"
|
||||
#include "base/containers/contains.h"
|
||||
#include "base/rand_util.h"
|
||||
#include "base/strings/string_util.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "chromeos/ash/components/nearby/presence/conversions/proto_conversions.h"
|
||||
#include "chromeos/ash/components/nearby/presence/credentials/prefs.h"
|
||||
@@ -52,9 +52,7 @@ void LocalDeviceDataProviderImpl::UpdatePersistedSharedCredentials(
|
||||
new_shared_credentials) {
|
||||
base::Value::List list;
|
||||
for (const auto& credential : new_shared_credentials) {
|
||||
// Hex encoding converts the secret_id blob to a UTF-8 compatible string.
|
||||
list.Append(base::HexEncode(std::vector<uint8_t>(
|
||||
credential.secret_id().begin(), credential.secret_id().end())));
|
||||
list.Append(base::NumberToString(credential.id()));
|
||||
}
|
||||
pref_service_->SetList(prefs::kNearbyPresenceSharedCredentialIdListPrefName,
|
||||
std::move(list));
|
||||
@@ -72,10 +70,7 @@ bool LocalDeviceDataProviderImpl::HaveSharedCredentialsChanged(
|
||||
|
||||
std::set<std::string> new_shared_credential_ids;
|
||||
for (const auto& credential : new_shared_credentials) {
|
||||
// Hex encode the blobs for correct comparison with the IDs encoded in
|
||||
// UpdatePersistedSharedCredentials().
|
||||
new_shared_credential_ids.insert(base::HexEncode(std::vector<uint8_t>(
|
||||
credential.secret_id().begin(), credential.secret_id().end())));
|
||||
new_shared_credential_ids.insert(base::NumberToString(credential.id()));
|
||||
}
|
||||
|
||||
return new_shared_credential_ids != persisted_shared_credential_ids;
|
||||
|
@@ -30,12 +30,12 @@ const std::string kCanocalizedUserEmail = "testtester@gmail.com";
|
||||
const std::string kGivenName = "Test";
|
||||
const std::string kUserName = "Test Tester";
|
||||
const std::string kProfileUrl = "https://example.com";
|
||||
const std::vector<uint8_t> kSecretId1 = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11};
|
||||
const std::vector<uint8_t> kSecretId2 = {0x22, 0x22, 0x22, 0x22, 0x22, 0x22};
|
||||
const std::vector<uint8_t> kSecretId3 = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33};
|
||||
const std::vector<uint8_t> kSecretId4 = {0x44, 0x44, 0x44, 0x44, 0x44, 0x44};
|
||||
const std::vector<uint8_t> kSecretId5 = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
|
||||
const std::vector<uint8_t> kSecretId6 = {0x66, 0x66, 0x66, 0x66, 0x66, 0x66};
|
||||
constexpr int64_t kId1 = 111;
|
||||
constexpr int64_t kId2 = 222;
|
||||
constexpr int64_t kId3 = 333;
|
||||
constexpr int64_t kId4 = 444;
|
||||
constexpr int64_t kId5 = 555;
|
||||
constexpr int64_t kId6 = 666;
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -128,47 +128,41 @@ TEST_F(LocalDeviceDataProviderImplTest, PersistCredentialIds) {
|
||||
// Mock a list of shared credentials. These credentials can be empty except
|
||||
// for the secret id field for unit test purposes since only the secret id is
|
||||
// persisted and checked for changes.
|
||||
::nearby::internal::SharedCredential shared_credential1;
|
||||
shared_credential1.set_secret_id(
|
||||
std::string(kSecretId1.begin(), kSecretId1.end()));
|
||||
::nearby::internal::SharedCredential shared_credential2;
|
||||
shared_credential2.set_secret_id(
|
||||
std::string(kSecretId2.begin(), kSecretId2.end()));
|
||||
::nearby::internal::SharedCredential shared_credential3;
|
||||
shared_credential3.set_secret_id(
|
||||
std::string(kSecretId3.begin(), kSecretId3.end()));
|
||||
::nearby::internal::SharedCredential shared_credential_1;
|
||||
shared_credential_1.set_id(kId1);
|
||||
::nearby::internal::SharedCredential shared_credential_2;
|
||||
shared_credential_2.set_id(kId2);
|
||||
::nearby::internal::SharedCredential shared_credential_3;
|
||||
shared_credential_3.set_id(kId3);
|
||||
|
||||
// Persist the list of shared credentials ids, and expect that the same list
|
||||
// passed to `HavePublicCredentialsChanged` returns false.
|
||||
local_device_data_provider_->UpdatePersistedSharedCredentials(
|
||||
{shared_credential1, shared_credential2, shared_credential3});
|
||||
{shared_credential_1, shared_credential_2, shared_credential_3});
|
||||
EXPECT_FALSE(local_device_data_provider_->HaveSharedCredentialsChanged(
|
||||
{shared_credential1, shared_credential2, shared_credential3}));
|
||||
{shared_credential_1, shared_credential_2, shared_credential_3}));
|
||||
|
||||
// Send in a changed list of shared credential ids to
|
||||
// `HavePublicCredentialsChanged` and expect it returns true.
|
||||
::nearby::internal::SharedCredential shared_credential4;
|
||||
shared_credential4.set_secret_id(
|
||||
std::string(kSecretId4.begin(), kSecretId4.end()));
|
||||
::nearby::internal::SharedCredential shared_credential5;
|
||||
shared_credential5.set_secret_id(
|
||||
std::string(kSecretId5.begin(), kSecretId5.end()));
|
||||
::nearby::internal::SharedCredential shared_credential6;
|
||||
shared_credential6.set_secret_id(
|
||||
std::string(kSecretId6.begin(), kSecretId6.end()));
|
||||
::nearby::internal::SharedCredential shared_credential_4;
|
||||
shared_credential_4.set_id(kId4);
|
||||
::nearby::internal::SharedCredential shared_credential_5;
|
||||
shared_credential_5.set_id(kId5);
|
||||
::nearby::internal::SharedCredential shared_credential_6;
|
||||
shared_credential_6.set_id(kId6);
|
||||
EXPECT_TRUE(local_device_data_provider_->HaveSharedCredentialsChanged(
|
||||
{shared_credential4, shared_credential5, shared_credential6}));
|
||||
{shared_credential_4, shared_credential_5, shared_credential_6}));
|
||||
|
||||
// Send in a changed list of shared credential ids with one removed, and
|
||||
// expect it to return true.
|
||||
EXPECT_TRUE(local_device_data_provider_->HaveSharedCredentialsChanged(
|
||||
{shared_credential1, shared_credential2}));
|
||||
{shared_credential_1, shared_credential_2}));
|
||||
|
||||
// Send in a changed list of shared credential ids with one added, and
|
||||
// expect it to return true.
|
||||
EXPECT_TRUE(local_device_data_provider_->HaveSharedCredentialsChanged(
|
||||
{shared_credential1, shared_credential2, shared_credential3,
|
||||
shared_credential4}));
|
||||
{shared_credential_1, shared_credential_2, shared_credential_3,
|
||||
shared_credential_4}));
|
||||
}
|
||||
|
||||
} // namespace ash::nearby::presence
|
||||
|
Reference in New Issue
Block a user