# 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",
    "bio/enrollment.cc",
    "bio/enrollment.h",
    "bio/enrollment_handler.cc",
    "bio/enrollment_handler.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",
    "fido_types.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",
    "//device/bluetooth/public/cpp",
    "//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/discovery.cc",
      "mac/discovery.h",
      "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/logging.cc",
      "win/logging.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",
    "//base/test:test_support",
    "//device/bluetooth:mocks",
    "//testing/gmock",
    "//testing/gtest",
  ]
  libfuzzer_options = [ "max_len=2048" ]
}

fuzzer_test("fido_cable_handshake_handler_v2_fuzzer") {
  sources = [
    "cable/fido_cable_handshake_handler_v2_fuzzer.cc",
  ]
  deps = [
    ":fido",
    "//base",
    "//base/test:test_support",
    "//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",
    "test_callback_receiver.h",
    "virtual_fido_device_factory.cc",
    "virtual_fido_device_factory.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",
    ]
  }
}
