Hook WebAuthN to //device/u2f to perform credential registration.

This change implements the browser-side of authenticator.mojom to
build and send a U2F-style request to //device/u2f to talk to a
hardware authenticator. This also adds a utility class to map the u2f
response from U2fDevice to a CTAP response per the FIDO2 and WebAuthN specs.

Bug: 664630
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: I7d5f9e2308c45fdd8ca9463a8a78c2f88d9aeb80
Reviewed-on: https://chromium-review.googlesource.com/710516
Reviewed-by: Jochen Eisinger <[email protected]>
Reviewed-by: Mike West <[email protected]>
Reviewed-by: Reilly Grant <[email protected]>
Reviewed-by: Balazs Engedy <[email protected]>
Commit-Queue: Kim Paulhamus <[email protected]>
Cr-Commit-Position: refs/heads/master@{#518277}
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index d64f9b7..b363ac2 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -84,6 +84,7 @@
     "//device/geolocation/public/cpp",
     "//device/geolocation/public/interfaces",
     "//device/screen_orientation/public/interfaces",
+    "//device/u2f",
     "//device/vr:mojo_bindings",
     "//google_apis",
     "//gpu",
@@ -1651,8 +1652,6 @@
     "web_contents/web_drag_source_mac.mm",
     "web_contents/web_drag_utils_win.cc",
     "web_contents/web_drag_utils_win.h",
-    "webauth/authenticator_impl.cc",
-    "webauth/authenticator_impl.h",
     "webauth/cbor/cbor_values.cc",
     "webauth/cbor/cbor_values.h",
     "webauth/cbor/cbor_writer.cc",
@@ -2160,6 +2159,30 @@
       "speech/speech_recognition_engine.h",
       "speech/speech_recognizer_impl.cc",
       "speech/speech_recognizer_impl.h",
+
+      # Most webauth code is non-Android
+      "webauth/attestation_data.cc",
+      "webauth/attestation_data.h",
+      "webauth/attestation_object.cc",
+      "webauth/attestation_object.h",
+      "webauth/attestation_statement.cc",
+      "webauth/attestation_statement.h",
+      "webauth/authenticator_data.cc",
+      "webauth/authenticator_data.h",
+      "webauth/authenticator_impl.cc",
+      "webauth/authenticator_impl.h",
+      "webauth/authenticator_utils.cc",
+      "webauth/authenticator_utils.h",
+      "webauth/collected_client_data.cc",
+      "webauth/collected_client_data.h",
+      "webauth/ec_public_key.cc",
+      "webauth/ec_public_key.h",
+      "webauth/fido_attestation_statement.cc",
+      "webauth/fido_attestation_statement.h",
+      "webauth/public_key.cc",
+      "webauth/public_key.h",
+      "webauth/register_response_data.cc",
+      "webauth/register_response_data.h",
     ]
     deps += [ "//third_party/flac" ]
   }