[fido] Refactor large blob operations
Refactor large blob operations into FidoDeviceAuthenticator.
Previously, large blob logic was all over the place:
* Compression and uncompression happened on AuthenticatorCommonImpl.
* Managing read / write operations and matching blobs to credentials
happened on GetAssertionRequestHandler.
* Marshalling the bits to and from the authenticator happened on
FidoDeviceAuthenticator.
This CL moves these three activities behind FidoDeviceAuthenticator's
GetAssertion method. This lets us better support Windows & Hybrid, where
large blob requests are always bundled with GetAssertion and have
different requirements (e.g. no compression needs to happen on Windows).
A disadvantage of this CL is for requests that return multiple
credentials, we'll uncompress every blob before the user picks a
credential, wasting some cycles. No other behaviour changes are
intended.
Bug: 1406632
Change-Id: I732e25e4cc911d64cfad5967d91bf5ed72e7c924
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4198007
Reviewed-by: Martin Kreichgauer <[email protected]>
Commit-Queue: Robert Sesek <[email protected]>
Auto-Submit: Nina Satragno <[email protected]>
Reviewed-by: Robert Sesek <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1099494}
diff --git a/device/BUILD.gn b/device/BUILD.gn
index 48aacc9..03afea5 100644
--- a/device/BUILD.gn
+++ b/device/BUILD.gn
@@ -187,7 +187,10 @@
"fido/virtual_u2f_device_unittest.cc",
]
- deps += [ "//device/fido:mocks" ]
+ deps += [
+ "//device/fido:mocks",
+ "//services/data_decoder/public/cpp:test_support",
+ ]
if (is_mac) {
data_deps += [ "fido/strings:fido_test_strings" ]