Commit Graph
75 Commits
Author SHA1 Message Date
Ivo Ristovski List 038c73520d Automated Code Change
PiperOrigin-RevId: 802282871
2025-09-02 14:04:04 -07:00
Francis Tsui 30b32e52f2 internal change
PiperOrigin-RevId: 758393007
2025-05-13 15:12:11 -07:00
Francis Tsui b48b943275 Remove reference to BlePeripheral.
PiperOrigin-RevId: 757830081
2025-05-12 10:55:38 -07:00
Anay Wadhera f26d25ed01 Provide a platform abstraction for RandBytes instead of swapping headers
The `RandBytes` functions were being placed in the `crypto` namespace,
which collides with Chromium's namespace of the same name. Within,
`RandBytes` was defined with almost-the-same API. Then in Chromium
builds, the Chromium header would be used instead (though somewhat
inconsistently).

This creates a lot of pain for Chromium development as there's a
third-party repository directly depending on headers from Chromium's
source tree, and is against the third-party policies for that reason.
There are a number of other headers that mirror Chromium and are
swapped out in the Chromium build that will cause similar pain, such as:
```
include "crypto/aead.h"
include "crypto/ec_private_key.h"
include "crypto/hkdf.h"
```

This CL provides a template for how to get rid of these header swaps and
give a platform abstraction in nearby instead.

We provide a platform abstraction in `platform/crypto.h` (really in
`platform/implementation/crypto.h`) which is implemented in
`platform/implementation/shared/crypto.cc`. However that implementation
is removed by `#ifdef` when in the Chromium build.

Then, in the Chromium repo, we will add (separately) an implementation
of the same abstraction in `//third_party/nearby/platform_impl` with GN
rules to include it in the build. It will replace the implementation
from the nearby repo.

Copybara import of the project:

--
6ca8099 by danakj <danakj@chromium.org>:

Provide a platform abstraction for RandBytes instead of swapping headers

The `RandBytes` functions were being placed in the `crypto` namespace,
which collides with Chromium's namespace of the same name. Within,
`RandBytes` was defined with almost-the-same API. Then in Chromium
builds, the Chromium header would be used instead (though somewhat
inconsistently).

This creates a lot of pain for Chromium development as there's a
third-party repository directly depending on headers from Chromium's
source tree, and is against the third-party policies for that reason.
There are a number of other headers that mirror Chromium and are
swapped out in the Chromium build that will cause similar pain, such as:
```
include "crypto/aead.h"
include "crypto/ec_private_key.h"
include "crypto/hkdf.h"
```

This CL provides a template for how to get rid of these header swaps and
give a platform abstraction in nearby instead.

We provide a platform abstraction in `platform/crypto.h` (really in
`platform/implementation/crypto.h`) which is implemented in
`platform/implementation/shared/crypto.cc`. However that implementation
is removed by `#ifdef` when in the Chromium build.

Then, in the Chromium repo, we will add (separately) an implementation
of the same abstraction in `//third_party/nearby/platform_impl` with GN
rules to include it in the build. It will replace the implementation
from the nearby repo.

--
9c2654b by danakj <danakj@chromium.org>:

Remove CryptoSpan, use absl::Span

The header swapping of Chromium crypto libraries is
problematic, but absl::Span will convert to base::span
so there's no need for the typedef even without
removing the header swapping yet.

--
df1135d by danakj <danakj@chromium.org>:

Add missing files

--
ab18a15 by danakj <danakj@chromium.org>:

Remove the random_unittest.cc from Swift build

The file moved, so the Swift package needs its path
updated.

--
2038f78 by danakj <danakj@chromium.org>:

Combine crypto unittests into crypto_test.cc

--
f7ad176 by danakj <danakj@chromium.org>:

Add stdint and stddef includes for uint8_t and size_t

--
9f04590 by danakj <danakj@chromium.org>:

Mark the shared crypto implementation compatable_with non_prod

--
18eeafd by danakj <danakj@chromium.org>:

Add IWYU pragma for crypto implementation

PiperOrigin-RevId: 632150866
2024-05-09 08:02:50 -07:00
hai007 50c1838e00 Use rust based decoding logic by default
PiperOrigin-RevId: 629850723
2024-05-01 15:09:13 -07:00
hai007 f4bad55cac Internal change
PiperOrigin-RevId: 628207314
2024-04-25 15:23:36 -07:00
hai007 e9b57452b1 Remove LDT build flag, build against rust ldt by default
PiperOrigin-RevId: 628196553
2024-04-25 14:47:07 -07:00
hai007 47caa7979a Fix copybara export of build rules for beto-core
PiperOrigin-RevId: 627464568
2024-04-23 12:09:50 -07:00
hai007 1c4bd01fe6 Update presence build rules and copybara export to OSS
- updates the build to be compatible with ldt in the open source repo

PiperOrigin-RevId: 627415836
2024-04-23 09:40:55 -07:00
hai007 d1f3a91e24 Initial implementation of rust decoder
PiperOrigin-RevId: 624312324
2024-04-12 15:40:44 -07:00
hai007 734014a841 Add build flag to switch between C++ and rust implemented parser
- Both implementations implement `AdvertisementDecoder` interface and provide the
   concrete implementation for AdvertisementDecoderImpl
 - cleanup missing includes as complained about by clang-tidy

PiperOrigin-RevId: 621187625
2024-04-02 08:43:31 -07:00
hai007 112da5e64a Refactor, remove scan_request dependency from AdvertisementDecoder
- Removes banned_data_types_, PUBLIC identity advertisements will never have
   any corresponding credentials anyways, so decryption will always be skipped
   and this is now guarenteed by asserts in UpdatePublicCredentials
 - Filtering adv based on identity is moved into advertisement Filter which
   already contains the requested identity info from scan_request
 - LegacyPresenceScanFilter is no longer used by AdvertisementDecoder since
   this is not being used anywhere at the moment
 - Cleanup miscellaneous clang-tidy lints about missing or unused includes

PiperOrigin-RevId: 620086399
2024-03-28 16:15:37 -07:00
hai007 5bc1c83472 Pure Refactor: move filtering logic into AdvertisementFilter class
- this decouples filtering logic from advertisement decoding logic
   in preparation for introducing a Rust backed impl of
   AdvertisementDecoder
 - this change is only a refactor and does not change functionality
   in any way

PiperOrigin-RevId: 618978564
2024-03-25 15:33:20 -07:00
Ryan Hansberry 8561d03a21 [Nearby] CredentialManager: Do not block on main thread.
PiperOrigin-RevId: 608743138
2024-02-20 14:37:12 -08:00
Juliet Levesque caf34a717f [Nearby Presence] Read response data from remote device
see go/cros-nearby-presence-np-nc-authentication for details.

PiperOrigin-RevId: 606772097
2024-02-13 15:50:07 -08:00
Juliet Levesque aaa1bea130 [Nearby Presence] Expose API's to fetch local credentials
Expose APIs to fetch local credentials from the CredentialManager, which will be used to fetch a local credential to be used for authentication in follow up CL's. See go/cros-nearby-presence-np-nc-authentication  for details.

PiperOrigin-RevId: 601781066
2024-01-26 09:04:16 -08:00
Joy Babafemi 85bf78ef70 Add sensor fusion implementation to presence C++
PiperOrigin-RevId: 555676715
2023-08-10 15:24:29 -07:00
Janusz Sobczak 5393daf9f1 Merge logging and types build targets
Both "types" and "logging" build targets included "logging.h"
Merging them together avoids circular dependencies.

PiperOrigin-RevId: 555262816
2023-08-09 19:13:12 -07:00
Hai Shang 562483cb44 update sensor fusion api to favor std::optional over absl::optional
PiperOrigin-RevId: 551257674
2023-07-26 11:02:06 -07:00
Joy Babafemi 5b605b2426 Refactor std::function usage to absl::AnyInvocable for ZoneTransitionCallback
PiperOrigin-RevId: 550959839
2023-07-25 12:16:20 -07:00
Crisrael Lucero 0e44ed626d Refactor crypto/ directory into crypto_cros/ and crypto/
PiperOrigin-RevId: 549467911
2023-07-19 17:12:52 -07:00
Anay Wadhera 770f59b748 Update connection authenticator to account for multi-identity support.
PiperOrigin-RevId: 547880233
2023-07-13 12:18:05 -07:00
Anay Wadhera f830eaddf0 disable rust ldt by default
PiperOrigin-RevId: 546127141
2023-07-06 16:52:17 -07:00
Hai Shang e949d922de Refill creds if needed in getting shared & local creds.
PiperOrigin-RevId: 546093134
2023-07-06 14:28:58 -07:00
Anay Wadhera e0674d435e Implement signing/verification of PresenceAuthenticationFrames
PiperOrigin-RevId: 540029386
2023-06-13 11:53:15 -07:00
hai007 5aeceb2034 Update path to LDT dependency
PiperOrigin-RevId: 539811031
2023-06-12 17:58:12 -07:00
Anay Wadhera 9dff873424 Convert LDT Rust to a normal define
PiperOrigin-RevId: 531318262
2023-05-11 15:09:04 -07:00
Anay Wadhera f21b1e7089 internal change
PiperOrigin-RevId: 529179617
2023-05-03 13:32:34 -07:00
Hai Shang c312442f3d internal clean up
PiperOrigin-RevId: 521555239
2023-04-03 14:00:22 -07:00
Hai Shang 47b7a04939 minor clean up
PiperOrigin-RevId: 520734787
2023-03-30 13:56:57 -07:00
Nick Bourdakos 14e7832be0 Internal change
PiperOrigin-RevId: 520638739
2023-03-30 12:34:53 -07:00
Nick Bourdakos 39df20d821 Internal change
PiperOrigin-RevId: 518186148
2023-03-20 23:51:16 -07:00
Anay Wadhera b0e5b059d9 Internal upgrade
PiperOrigin-RevId: 513590478
2023-03-02 11:20:57 -08:00
Janusz Sobczak bb0ccf9156 Verify LDT with test data from android tests
PiperOrigin-RevId: 513093397
2023-02-28 18:12:03 -08:00
Janusz Sobczak 4f21a570e4 Add ParseAndroidSharedCredential test
PiperOrigin-RevId: 509588875
2023-02-14 11:31:37 -08:00
Suet-Fei Li 00f86cde7b Do not build Rust for Windows & Android platforms.
PiperOrigin-RevId: 509133994
2023-02-12 23:07:20 -08:00
Janusz Sobczak 5f4144cd0b Update SharedCredential definition
PiperOrigin-RevId: 507568902
2023-02-06 13:33:23 -08:00
Anay Wadhera 16af6a7e6b Allow tests to be runnable on Windows
PiperOrigin-RevId: 506364864
2023-02-01 10:59:01 -08:00
Janusz Sobczak 2746a4aa2f Fix field sizes in credentials
authenticity_key must be 32 bytes. metadata_encryption_key must be 14 bytes.

PiperOrigin-RevId: 505183908
2023-01-27 12:34:51 -08:00
Janusz Sobczak eb282a64da Set credential start&end times
PiperOrigin-RevId: 504880260
2023-01-26 10:33:22 -08:00
Janusz Sobczak ca547df4d7 Subscribe for public credentials update
Nearby Presence scanning sessions may be very long. We need a way to notify the scanner that new credentials were added during scanning.
`SubscribeForPublicCredentials()` allows us to subscribe for such updates.

PiperOrigin-RevId: 502699345
2023-01-17 15:07:14 -08:00
Anay Wadhera 7afea00649 Internal change
PiperOrigin-RevId: 499997190
2023-01-06 02:49:53 -08:00
Janusz Sobczak b3f8534226 Use Rand instead of absl::Random
Use Nearby's common Rand() util instead of absl::Random

PiperOrigin-RevId: 495386054
2022-12-14 12:30:56 -08:00
Anay Wadhera 228e52e979 Refactor broadcasting code into BroadcastManager
PiperOrigin-RevId: 495021310
2022-12-13 07:57:04 -08:00
Janusz Sobczak 0fb81f2b27 Enable LDT by default
PiperOrigin-RevId: 494227035
2022-12-09 11:50:36 -08:00
Janusz Sobczak a92abac83a Update advertisement encoder/decoder
1. Update the API to accept the credentials on input instead of credential manager.
2. Update the test with values using the LDT encryption.

These changes allow us to have a more asynchronous implementaion.
When broadcasting we can:
1. Fetch the private credentials asynchronously.
2. Create the advertisement and start broadcasting when the credentials have been fetched.

When scanning we can:
1. Fetch public credentials asynchronously.
2. Start scanning for advertisements.
3. Update the decoder when new credentials are fetched.

PiperOrigin-RevId: 493998041
2022-12-08 14:36:44 -08:00
Anay Wadhera 87c57534a4 Include check.h header to fix Github presence build
PiperOrigin-RevId: 493067786
2022-12-05 11:43:05 -08:00
Janusz Sobczak e44f7eac61 Aynchronous start and stop broadcast
PiperOrigin-RevId: 491772964
2022-11-29 16:59:41 -08:00
Hai Shang 6871b9d5a6 Add initial impl for UpdateRemotePublicCredentials in CredentialManager.
PiperOrigin-RevId: 491458184
2022-11-28 15:24:26 -08:00
Janusz Sobczak 8bd3d34580 Link with Rust NP LDT
Add conditional dependency on Rust NP LDT.
By default, we will use an empty stub.

PiperOrigin-RevId: 490554102
2022-11-23 11:55:52 -08:00