# 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",
    "credential_management.cc",
    "credential_management.h",
    "credential_management_handler.cc",
    "credential_management_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",
    "//components/device_event_log",
  ]
  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",
    ]
  }
}
