Commit Graph
474 Commits
Author SHA1 Message Date
Edwin Wu 152cabab7c Fix a bug in file payload.
PiperOrigin-RevId: 640494382
2024-06-05 05:43:02 -07:00
Edwin Wu 334ef7a3e1 [JNI] Refactor Payload and PayloadId/PayloadType
PiperOrigin-RevId: 640490438
2024-06-05 05:25:29 -07:00
Guogang Li 9b8d708a7f Add use_stable_endpoint_id to AdvertisingOptions
PiperOrigin-RevId: 638501216
2024-05-29 20:25:48 -07:00
Eiden Kim 51dcfe807d Fix a crash in BasePcpHandler::BreakTie.
PiperOrigin-RevId: 638412219
2024-05-29 14:26:23 -07:00
Eiden Kim 76b4f6c51a Block any upgrade path available frames in Advertising side
PiperOrigin-RevId: 636753678
2024-05-23 19:29:19 -07:00
Eiden Kim dca2997f5d Added more checks to file path validation.
PiperOrigin-RevId: 635580793
2024-05-20 15:03:50 -07:00
Eiden Kim b224f8660c Check illegal characters from the file and parent folder name
PiperOrigin-RevId: 634941778
2024-05-17 18:46:26 -07:00
Eiden Kim 33d66fd169 Check illegal characters from the file and parent folder name
PiperOrigin-RevId: 634598623
2024-05-16 18:54:45 -07:00
hai007 00e8286021 add connection mode
PiperOrigin-RevId: 633706665
2024-05-14 14:28:03 -07:00
hai007 1c8395eede Fix the bug that the multiplex socket is not closed properly.
PiperOrigin-RevId: 633675141
2024-05-14 12:47:19 -07:00
hai007 7c72774167 Multiplex implementation - Create Multiplex Socket
PiperOrigin-RevId: 632628955
2024-05-10 16:11:26 -07:00
Eiden Kim 6d4f2c2606 Add a flag to check illegal characters in the file name and parent folder
PiperOrigin-RevId: 632577432
2024-05-10 12:50:45 -07:00
Hai Shang ce030a76b6 internal cleanup
PiperOrigin-RevId: 632285218
2024-05-09 15:20:03 -07:00
Anay Wadhera 5d6735371b Make sure we never generate a payload ID of 0.
PiperOrigin-RevId: 632210716
2024-05-09 11:15:02 -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
Anay Wadhera 3b701c78f3 Deny and abort payloads with ID 0.
PiperOrigin-RevId: 631864387
2024-05-08 11:24:21 -07:00
Anay Wadhera 85ebca532e Fix not rejecting a frame with an empty endpoint ID.
PiperOrigin-RevId: 631563161
2024-05-07 15:12:09 -07:00
Anay Wadhera bf23ee5851 Remove endpoint ID CHECKs from Core
PiperOrigin-RevId: 631535509
2024-05-07 13:47:36 -07:00
Hai Shang 77515694c8 Internal fix.
PiperOrigin-RevId: 628181275
2024-04-25 13:56:13 -07:00
Hai Shang bcad0cae6e Last CL for the 1 bit solution in BLE v2.
PiperOrigin-RevId: 625856655
2024-04-17 17:31:38 -07:00
Francis Tsui 012b9b0569 Cleanup EventLogger interface.
PiperOrigin-RevId: 625797877
2024-04-17 13:59:30 -07:00
Eiden Kim 35a8289ef4 Block any BWU frames before the NC connection accepted by both side
PiperOrigin-RevId: 625459811
2024-04-16 14:49:14 -07:00
hai007 198243f4c3 Automated Code Change
PiperOrigin-RevId: 625233447
2024-04-16 01:04:56 -07:00
Eiden Kim b40a0d9046 Add a flag to nearby_connections_feature_flags.h manually
PiperOrigin-RevId: 625010913
2024-04-15 10:46:28 -07:00
Daniel Classon 05dac6b184 [Nearby Connections] Rename async scanning flag
Renames the enable_ble_v2_async_scanning_advertising flag to just
enable_ble_v2_async_scanning, reflecting that scanning/advertising
can be enabled independently. Work required to add async
advertising is tracked in b/333408829.

PiperOrigin-RevId: 624254277
2024-04-12 12:15:21 -07:00
hai007 1e1d841965 Multiplex implementation - Create Virtual Output Stream
PiperOrigin-RevId: 623540454
2024-04-10 10:44:50 -07:00
Nick Bourdakos a08a42077c PR #2404: Add license header to all source files
Imported from GitHub PR https://github.com/google/nearby/pull/2404

Copybara import of the project:

--
a6fbb3c396321c0b9012b787323f5f2ff652fd8f by Nick Bourdakos <bourdakos1@gmail.com>:

Add license header to all source files

Merging this change closes #2404

PiperOrigin-RevId: 623540004
2024-04-10 10:40:38 -07:00
Hai Shang 8f51d92f22 internal fix
PiperOrigin-RevId: 622893779
2024-04-08 10:49:27 -07:00
Hai Shang d2c8fc3cd5 Internal fix
PiperOrigin-RevId: 622865759
2024-04-08 09:18:16 -07:00
hai007 2a56254756 Automated Code Change
PiperOrigin-RevId: 621908243
2024-04-04 10:52:30 -07:00
Hai Shang ca936891c8 Add start/stop legacyDeviceAdvertising in connections ble v2
PiperOrigin-RevId: 621303221
2024-04-02 14:52:36 -07:00
hai007 ce7fc7ef69 Automated Code Change
PiperOrigin-RevId: 621128773
2024-04-02 04:21:56 -07:00
Nick Bourdakos ca500a8d98 PR #2393: Add missing license headers to Swift files
Imported from GitHub PR https://github.com/google/nearby/pull/2393

Copybara import of the project:

--
9f5918dd18b0cb825d2f671d18eb15a119a7e6d1 by Nick Bourdakos <bourdakos1@gmail.com>:

Add missing license headers to Swift files

Merging this change closes #2393

COPYBARA_INTEGRATE_REVIEW=https://github.com/google/nearby/pull/2393 from bourdakos1:add-swift-license 9f5918dd18b0cb825d2f671d18eb15a119a7e6d1
PiperOrigin-RevId: 621062126
2024-04-01 23:03:32 -07:00
Nick Bourdakos 5e53ac62d5 Update formatting of connections mediums support tables 2024-03-27 23:02:20 -04:00
Hai Shang 6162fb5f80 add legacy_device_discovered_cb to DiscoveredPeripheralCallback
PiperOrigin-RevId: 619702145
2024-03-27 17:45:37 -07:00
Will Harmon 4123a74c0e Add table for GitHub about which mediums are supported
PiperOrigin-RevId: 619668129
2024-03-27 17:44:57 -07:00
Guogang Li 387a51b260 internal update
PiperOrigin-RevId: 619595164
2024-03-27 11:25:55 -07:00
Edwin Wu 76da129ce5 Fix PayloadType enumeration value in c++ code, and minor update JNI java counterpart.
PiperOrigin-RevId: 618877462
2024-03-25 10:05:52 -07:00
hai007 a633a940f4 Multiplex implementation - Frame generation
PiperOrigin-RevId: 616247739
2024-03-15 14:45:01 -07:00
Francis Tsui a082f36021 Switch glog to absl::log.
PiperOrigin-RevId: 615535748
2024-03-13 14:03:23 -07:00
hai007 87def076a5 Internal change
PiperOrigin-RevId: 613818883
2024-03-08 14:40:41 -08:00
Hai Shang c2495b275a Internal cleanup
PiperOrigin-RevId: 613362254
2024-03-06 15:35:09 -08:00
Juliet Levesque ecb9de0cbc [Nearby Presence] Add authentication status to InitialConnectionInfo
Adds authentication status to `InitialConnectionInfo`, which will pass the result of the authentication to clients when the connection is complete. See go/cros-nearby-presence-np-nc-authentication for details. This is used to communicate the authentication status to clients of RequestConnectionV3().

PiperOrigin-RevId: 613278476
2024-03-06 11:10:38 -08:00
Copybara-Service ee404cb766 Merge pull request #2307 from ChenWangG:patch-1
PiperOrigin-RevId: 612604370
2024-03-04 15:42:43 -08:00
Nick Bourdakos 32fc3f7c10 Fix spelling of Wi-Fi
PiperOrigin-RevId: 611532710
2024-02-29 11:11:55 -08:00
Juliet Levesque f235957345 [Nearby Presence] Authenticate the connection using the DeviceProvider
Once the encryption protocol has been completed successfully, authentication the connection using the registered DeviceProvider from the ClientProxy. For the Nearby Presence MVP, this will be the PresenceDeviceProvider and will only support outgoing connections, which is why the responder role is not used. The result (success or failure) is passed back to callers via the EndpointManager. See go/cros-nearby-presence-np-nc-authentication  for details.

PiperOrigin-RevId: 611255632
2024-02-28 15:51:37 -08:00
Juliet Levesque 5f616fa592 [Nearby Presence] Pass remote device and EndpointManager throughout connection flow
In order to construct the `ConnectionsAuthenticationTransport` and authentication the connection with the `DeviceProvider`, the remote NearbyDevice and EndpointManager used in RequestConnectionV3() must be passed through the encryption protocol as parameters. This CL accomplishes this; it passes the remote NearbyDevice and EndpointManager through a successful encryption flow by introducting new functions to support this V3 protocol. They will be used in a follow up CL to authenticate the connection. See go/cros-nearby-presence-np-nc-authentication  for details.

PiperOrigin-RevId: 610810602
2024-02-27 11:05:52 -08:00
Suet-Fei Li fa2bcbe579 Internal Refactor.
PiperOrigin-RevId: 610806721
2024-02-27 10:56:35 -08:00
Suet-Fei Li 84062c8a3b Internal Refactor.
PiperOrigin-RevId: 609768025
2024-02-23 10:29:22 -08:00
Daniel Classon f09368247b [Nearby Connections] Use async StartScanning when flag enabled
Creates the feature flag `enable_ble_v2_async_scanning_advertising` which
enables/disables the use of the async StartScanning, StopScanning,
StartAdvertising, StopAdvertising, etc methods over the soon-to-be deprecated
synchronous versions of those methods. Opted for feature flag over NearbyFlag,
as ChromeOS is the only current consumer and doesn't use Mendel.

Also sets the feature flag to enabled in the ServiceControllerRouter, which
is where ChromeOS sets NC feature flags at startup.

This CL also fully links up the asynchronous Scanning methods. Advertising
will be addressed in a follow up CL.

PiperOrigin-RevId: 608158273
2024-02-18 12:59:02 -08:00