# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/features.gni")
import("//testing/libfuzzer/fuzzer_test.gni")

component("fido") {
  sources = [
    "attestation_object.cc",
    "attestation_object.h",
    "attestation_statement.cc",
    "attestation_statement.h",
    "attestation_statement_formats.cc",
    "attestation_statement_formats.h",
    "attested_credential_data.cc",
    "attested_credential_data.h",
    "authenticator_data.cc",
    "authenticator_data.h",
    "authenticator_get_assertion_response.cc",
    "authenticator_get_assertion_response.h",
    "authenticator_get_info_response.cc",
    "authenticator_get_info_response.h",
    "authenticator_make_credential_response.cc",
    "authenticator_make_credential_response.h",
    "authenticator_selection_criteria.cc",
    "authenticator_selection_criteria.h",
    "authenticator_supported_options.cc",
    "authenticator_supported_options.h",
    "ble/fido_ble_connection.cc",
    "ble/fido_ble_connection.h",
    "ble/fido_ble_device.cc",
    "ble/fido_ble_device.h",
    "ble/fido_ble_discovery.cc",
    "ble/fido_ble_discovery.h",
    "ble/fido_ble_discovery_base.cc",
    "ble/fido_ble_discovery_base.h",
    "ble/fido_ble_frames.cc",
    "ble/fido_ble_frames.h",
    "ble/fido_ble_pairing_delegate.cc",
    "ble/fido_ble_pairing_delegate.h",
    "ble/fido_ble_transaction.cc",
    "ble/fido_ble_transaction.h",
    "ble/fido_ble_uuids.cc",
    "ble/fido_ble_uuids.h",
    "ble_adapter_manager.cc",
    "ble_adapter_manager.h",
    "cable/cable_discovery_data.h",
    "cable/fido_cable_device.cc",
    "cable/fido_cable_device.h",
    "cable/fido_cable_discovery.cc",
    "cable/fido_cable_discovery.h",
    "cable/fido_cable_handshake_handler.cc",
    "cable/fido_cable_handshake_handler.h",
    "ctap2_device_operation.h",
    "ctap_empty_authenticator_request.cc",
    "ctap_empty_authenticator_request.h",
    "ctap_get_assertion_request.cc",
    "ctap_get_assertion_request.h",
    "ctap_make_credential_request.cc",
    "ctap_make_credential_request.h",
    "device_operation.h",
    "device_response_converter.cc",
    "device_response_converter.h",
    "ec_public_key.cc",
    "ec_public_key.h",
    "features.cc",
    "features.h",
    "fido_authenticator.cc",
    "fido_authenticator.h",
    "fido_constants.cc",
    "fido_constants.h",
    "fido_device.cc",
    "fido_device.h",
    "fido_device_authenticator.cc",
    "fido_device_authenticator.h",
    "fido_device_discovery.cc",
    "fido_device_discovery.h",
    "fido_discovery_base.cc",
    "fido_discovery_base.h",
    "fido_discovery_factory.cc",
    "fido_discovery_factory.h",
    "fido_parsing_utils.cc",
    "fido_parsing_utils.h",
    "fido_request_handler.h",
    "fido_request_handler_base.cc",
    "fido_request_handler_base.h",
    "fido_task.cc",
    "fido_task.h",
    "fido_transport_protocol.cc",
    "fido_transport_protocol.h",
    "get_assertion_request_handler.cc",
    "get_assertion_request_handler.h",
    "get_assertion_task.cc",
    "get_assertion_task.h",
    "hid/fido_hid_message.cc",
    "hid/fido_hid_message.h",
    "hid/fido_hid_packet.cc",
    "hid/fido_hid_packet.h",
    "make_credential_request_handler.cc",
    "make_credential_request_handler.h",
    "make_credential_task.cc",
    "make_credential_task.h",
    "opaque_attestation_statement.cc",
    "opaque_attestation_statement.h",
    "opaque_public_key.cc",
    "opaque_public_key.h",
    "pin.cc",
    "pin.h",
    "platform_credential_store.h",
    "public_key.cc",
    "public_key.h",
    "public_key_credential_descriptor.cc",
    "public_key_credential_descriptor.h",
    "public_key_credential_params.cc",
    "public_key_credential_params.h",
    "public_key_credential_rp_entity.cc",
    "public_key_credential_rp_entity.h",
    "public_key_credential_user_entity.cc",
    "public_key_credential_user_entity.h",
    "reset_request_handler.cc",
    "reset_request_handler.h",
    "response_data.cc",
    "response_data.h",
    "set_pin_request_handler.cc",
    "set_pin_request_handler.h",
    "u2f_command_constructor.cc",
    "u2f_command_constructor.h",
    "u2f_register_operation.cc",
    "u2f_register_operation.h",
    "u2f_sign_operation.cc",
    "u2f_sign_operation.h",
    "virtual_ctap2_device.cc",
    "virtual_ctap2_device.h",
    "virtual_fido_device.cc",
    "virtual_fido_device.h",
    "virtual_u2f_device.cc",
    "virtual_u2f_device.h",
  ]

  defines = [ "IS_DEVICE_FIDO_IMPL" ]

  deps = [
    "//components/apdu",
    "//components/cbor",
    "//components/device_event_log",
    "//crypto",
    "//device/base",
    "//device/fido/strings",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/mojom",
    "//third_party/boringssl",
    "//third_party/microsoft_webauthn",
    "//ui/base",
  ]

  public_deps = [
    "//base",
    "//device/bluetooth",
    "//services/device/public/mojom",
  ]

  libs = []  # Extended for mac.

  # HID is not supported on Android.
  if (!is_android) {
    sources += [
      "hid/fido_hid_device.cc",
      "hid/fido_hid_device.h",
      "hid/fido_hid_discovery.cc",
      "hid/fido_hid_discovery.h",
    ]

    deps += [
      "//services/device/public/cpp/hid",
      "//services/device/public/mojom",
    ]
  }

  if (is_mac) {
    sources += [
      "mac/authenticator.h",
      "mac/authenticator.mm",
      "mac/authenticator_config.h",
      "mac/credential_metadata.cc",
      "mac/credential_metadata.h",
      "mac/credential_store.h",
      "mac/credential_store.mm",
      "mac/get_assertion_operation.h",
      "mac/get_assertion_operation.mm",
      "mac/keychain.h",
      "mac/keychain.mm",
      "mac/make_credential_operation.h",
      "mac/make_credential_operation.mm",
      "mac/operation.h",
      "mac/operation_base.h",
      "mac/touch_id_context.h",
      "mac/touch_id_context.mm",
      "mac/util.h",
      "mac/util.mm",
    ]

    libs += [
      "Foundation.framework",
      "LocalAuthentication.framework",
      "Security.framework",
    ]
  }

  if (is_win) {
    sources += [
      "win/authenticator.cc",
      "win/authenticator.h",
      "win/discovery.cc",
      "win/discovery.h",
      "win/type_conversions.cc",
      "win/type_conversions.h",
      "win/webauthn_api.cc",
      "win/webauthn_api.h",
    ]
  }
}

source_set("mocks") {
  testonly = true

  sources = [
    "ble/mock_fido_ble_connection.cc",
    "ble/mock_fido_ble_connection.h",
    "mock_fido_device.cc",
    "mock_fido_device.h",
    "mock_fido_discovery_observer.cc",
    "mock_fido_discovery_observer.h",
  ]

  deps = [
    ":fido",
    "//base",
    "//components/apdu",
    "//components/cbor",
    "//testing/gmock",
  ]
}

fuzzer_test("fido_hid_message_fuzzer") {
  sources = [
    "hid/fido_hid_message_fuzzer.cc",
  ]
  deps = [
    ":fido",
    "//base",
  ]
  libfuzzer_options = [ "max_len=2048" ]
}

fuzzer_test("fido_ble_frames_fuzzer") {
  sources = [
    "ble/fido_ble_frames_fuzzer.cc",
  ]
  deps = [
    ":fido",
  ]
  libfuzzer_options = [ "max_len=65535" ]
}

fuzzer_test("ctap_response_fuzzer") {
  sources = [
    "ctap_response_fuzzer.cc",
  ]
  deps = [
    ":fido",
    "//base",
    "//base:i18n",
    "//components/cbor",
  ]
  seed_corpus = "response_data_fuzzer_corpus/"
  libfuzzer_options = [ "max_len=65537" ]
}

fuzzer_test("fido_cable_handshake_handler_fuzzer") {
  sources = [
    "cable/fido_cable_handshake_handler_fuzzer.cc",
  ]
  deps = [
    ":fido",
    "//base",
    "//device/bluetooth:mocks",
    "//testing/gmock",
    "//testing/gtest",
  ]
  libfuzzer_options = [ "max_len=2048" ]
}

is_linux_without_udev = is_linux && !use_udev

source_set("test_support") {
  testonly = true
  sources = [
    "fake_fido_discovery.cc",
    "fake_fido_discovery.h",
    "scoped_virtual_fido_device.cc",
    "scoped_virtual_fido_device.h",
    "test_callback_receiver.h",
  ]
  deps = [
    "//base",
    "//components/apdu",
    "//device/fido",
    "//mojo/public/cpp/bindings",
    "//services/device/public/mojom",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/mojom",
    "//testing/gmock",
    "//testing/gtest",
  ]

  # Android doesn't compile. Linux requires udev.
  if (!is_linux_without_udev && !is_android) {
    sources += [
      "hid/fake_hid_impl_for_testing.cc",
      "hid/fake_hid_impl_for_testing.h",
    ]
  }

  if (is_mac) {
    sources += [
      "mac/fake_keychain.h",
      "mac/fake_keychain.mm",
      "mac/fake_touch_id_context.h",
      "mac/fake_touch_id_context.mm",
      "mac/scoped_touch_id_test_environment.h",
      "mac/scoped_touch_id_test_environment.mm",
    ]
  }

  if (is_win) {
    sources += [
      "win/fake_webauthn_api.cc",
      "win/fake_webauthn_api.h",
    ]
  }
}
