Commit Graph
28 Commits
Author SHA1 Message Date
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
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
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
Qin Wang 33b2748a8c Add UX for Retroactive Pairing
PiperOrigin-RevId: 552944003
2023-08-01 15:38:15 -07:00
Qin Wang 0cd8aaab25 Write account association to footprints
PiperOrigin-RevId: 549693215
2023-07-20 11:39:06 -07:00
Crisrael Lucero 0e44ed626d Refactor crypto/ directory into crypto_cros/ and crypto/
PiperOrigin-RevId: 549467911
2023-07-19 17:12:52 -07:00
Qin Wang 99053e4df3 Implement scanner for fast pair subsequent pairing
PiperOrigin-RevId: 548841808
2023-07-17 17:20:01 -07:00
Janusz Sobczak 3cf20ee3bc Store metadata in FastPairDevice
Add DeviceMetadata to FastPairDevice after downloading it.
It simplifies the code and prevents fetching the same metadata several times.
FastPairDataEncryptorImpl does not download the metadata anymore. Metadata
must have already been downloaded, otherwise we wouldn't know what FP protocol
to use.

PiperOrigin-RevId: 542490742
2023-06-22 01:48:56 -07:00
Chun Zhang e101795cac Add Fast Pair Switches.
PiperOrigin-RevId: 538605609
2023-06-07 15:17:00 -07:00
Chun Zhang 2027fed32f Add Fast Pair Preferences.
PiperOrigin-RevId: 538597935
2023-06-07 14:48:06 -07:00
Qin Wang 55750a0843 Write Accountkey to remote device via GATT connection
PiperOrigin-RevId: 534992810
2023-05-24 14:59:40 -07:00
Janusz Sobczak c2fc33038c Define FastPairDeviceRepository
Move onwership of Fast Par Devices to a single point, FastPairDeviceRepository,
which will live inside a singleton FastPairService.

PiperOrigin-RevId: 534547186
2023-05-23 13:54:05 -07:00
Qin Wang 363d2a819e Pure refactor set/get functions in FastPairDevice
PiperOrigin-RevId: 533218929
2023-05-18 12:45:55 -07:00
Qin Wang b7d2ee0c45 Add account_key_filter to see the current device is a saved device
PiperOrigin-RevId: 533197294
2023-05-18 11:39:05 -07:00
Qin Wang 6d3704f50a Add battery notification and not discoverable advertisement
PiperOrigin-RevId: 532187475
2023-05-15 12:19:45 -07:00
Janusz Sobczak 013bf1f420 Add retroactive pairing
PiperOrigin-RevId: 531637311
2023-05-12 16:56:55 -07:00
Qin Wang a826f2d627 Add Pair failure info for fast pair pairing
PiperOrigin-RevId: 527087848
2023-04-25 15:14:20 -07:00
Qin Wang c1835fcfa1 Implement FastPairGattServiceClient for fast pair windows
PiperOrigin-RevId: 521005152
2023-03-31 13:52:34 -07:00
Janusz Sobczak 94630e75ea Promote FpDevice to a class
PiperOrigin-RevId: 520430547
2023-03-29 13:51:11 -07:00
Janusz Sobczak 02ffb5d45e Add Message Stream
Define MessageStream class for exchanging messages betweek the seeker and the
provider over rfcomm.

PiperOrigin-RevId: 516986541
2023-03-15 18:42:39 -07:00
Qin Wang 9f49719492 RefactorConstant
PiperOrigin-RevId: 513577039
2023-03-02 10:34:12 -08:00
Qin Wang f9dec58aff Add PairFailure to track errors for fast pair pairing
PiperOrigin-RevId: 513053149
2023-02-28 15:18:36 -08:00
Qin Wang d0750694ff Replace absl::optional with std::optional
PiperOrigin-RevId: 509649962
2023-02-14 15:10:04 -08:00
Qin Wang 7eeea7a283 Implement ECDH and AES Encryption/ Decryption for Fast Pair Windows
PiperOrigin-RevId: 501666600
2023-01-12 14:25:57 -08:00
Suet-Fei Li 084f7ebd88 Remove location namespace in third_party/nearby.
PiperOrigin-RevId: 500023196
2023-01-06 02:53:57 -08:00
hai007 76a002f6e3 Migrate fastpair Unauth fetcher from location/nearby/cpp/fastpair/server_access to third_party/nearby/fastpair/repository
PiperOrigin-RevId: 498413189
2022-12-29 10:40:03 -08:00
Qin Wang db0aaf75d2 Implementation FastPairDevice
PiperOrigin-RevId: 495078613
2022-12-13 11:27:44 -08:00
Qin Wang f73b23e720 Implement Protocol, Constant
PiperOrigin-RevId: 494858330
2022-12-12 16:21:35 -08:00