diff --git a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc index 262bd9c71b64d..2ce23021b2285 100644 --- a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc +++ b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc @@ -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( diff --git a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc index cf868ff901c1d..384a4ba38e65b 100644 --- a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc +++ b/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; diff --git a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.cc b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.cc index 3a769f96a3764..50714d016c5d6 100644 --- a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.cc +++ b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.cc @@ -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; diff --git a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl_unittest.cc b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl_unittest.cc index f3a133a442c42..691e9d8149468 100644 --- a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl_unittest.cc +++ b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl_unittest.cc @@ -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