chromium/chrome/browser/ash/attestation/BUILD.gn

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

import("//build/config/chromeos/ui_mode.gni")
import("//third_party/protobuf/proto_library.gni")

assert(is_chromeos_ash)

static_library("attestation") {
  sources = [
    "attestation_ca_client.cc",
    "attestation_ca_client.h",
    "certificate_util.cc",
    "certificate_util.h",
    "enrollment_certificate_uploader.h",
    "enrollment_certificate_uploader_impl.cc",
    "enrollment_certificate_uploader_impl.h",
    "enrollment_id_upload_manager.cc",
    "enrollment_id_upload_manager.h",
    "machine_certificate_uploader.h",
    "machine_certificate_uploader_impl.cc",
    "machine_certificate_uploader_impl.h",
    "platform_verification_flow.cc",
    "platform_verification_flow.h",
    "soft_bind_attestation_flow.h",
    "soft_bind_attestation_flow_impl.cc",
    "soft_bind_attestation_flow_impl.h",
    "tpm_challenge_key.cc",
    "tpm_challenge_key.h",
    "tpm_challenge_key_result.cc",
    "tpm_challenge_key_result.h",
    "tpm_challenge_key_subtle.cc",
    "tpm_challenge_key_subtle.h",
    "tpm_challenge_key_with_timeout.cc",
    "tpm_challenge_key_with_timeout.h",
  ]

  public_deps = [ "//chrome/browser:browser_public_dependencies" ]

  deps = [
    ":attestation_proto",
    "//ash/public/cpp",
    "//base",
    "//chrome/browser:browser_process",
    "//chrome/browser/ash/platform_keys/key_permissions",
    "//chrome/browser/ash/policy/core",
    "//chrome/browser/ash/policy/rsu",
    "//chrome/browser/ash/profiles",
    "//chrome/browser/ash/settings",
    "//chrome/browser/chromeos/platform_keys",
    "//chrome/browser/profiles",
    "//chrome/common:constants",
    "//chromeos/ash/components/attestation",
    "//chromeos/ash/components/cryptohome",
    "//chromeos/ash/components/dbus",
    "//chromeos/ash/components/dbus/attestation",
    "//chromeos/ash/components/dbus/attestation:attestation_proto",
    "//chromeos/ash/components/dbus/constants",
    "//chromeos/ash/components/dbus/cryptohome:attestation_proto",
    "//chromeos/ash/components/install_attributes",
    "//chromeos/ash/components/settings",
    "//chromeos/components/kiosk",
    "//chromeos/dbus/common",
    "//chromeos/dbus/tpm_manager",
    "//chromeos/dbus/tpm_manager:tpm_manager_proto",
    "//components/policy/core/common",
    "//components/pref_registry",
    "//content/public/browser",
    "//third_party/securemessage/proto",
  ]

  allow_circular_includes_from = [
    "//chrome/browser/ash/policy/core",
    "//chrome/browser/ash/policy/rsu",
  ]
}

static_library("test_support") {
  testonly = true

  sources = [
    "fake_soft_bind_attestation_flow.cc",
    "fake_soft_bind_attestation_flow.h",
    "mock_enrollment_certificate_uploader.cc",
    "mock_enrollment_certificate_uploader.h",
    "mock_machine_certificate_uploader.cc",
    "mock_machine_certificate_uploader.h",
    "mock_tpm_challenge_key.cc",
    "mock_tpm_challenge_key.h",
    "mock_tpm_challenge_key_subtle.cc",
    "mock_tpm_challenge_key_subtle.h",
  ]

  deps = [
    ":attestation",
    "//base",
    "//chromeos/ash/components/dbus/attestation:attestation_proto",
    "//chromeos/ash/components/dbus/constants",
    "//testing/gmock",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "attestation_ca_client_unittest.cc",
    "attestation_policy_unittest.cc",
    "certificate_util_unittest.cc",
    "enrollment_certificate_uploader_impl_unittest.cc",
    "enrollment_id_upload_manager_unittest.cc",
    "machine_certificate_uploader_impl_unittest.cc",
    "platform_verification_flow_unittest.cc",
    "tpm_challenge_key_result_unittest.cc",
    "tpm_challenge_key_subtle_unittest.cc",
    "tpm_challenge_key_unittest.cc",
  ]

  deps = [
    ":attestation",
    ":attestation_proto",
    ":test_support",
    ":test_with_shadow_variables",
    "//base/test:test_support",
    "//chrome/browser",
    "//chrome/browser/ash/login/users:test_support",
    "//chrome/browser/ash/platform_keys/key_permissions",
    "//chrome/browser/ash/platform_keys/key_permissions:test_support",
    "//chrome/browser/ash/settings",
    "//chrome/browser/ash/settings:test_support",
    "//chrome/browser/chromeos/platform_keys",
    "//chrome/test:test_support",
    "//chromeos/ash/components/attestation:test_support",
    "//chromeos/ash/components/cryptohome",
    "//chromeos/ash/components/dbus/attestation",
    "//chromeos/ash/components/dbus/attestation:attestation_proto",
    "//chromeos/ash/components/dbus/constants",
    "//chromeos/ash/components/dbus/cryptohome:attestation_proto",
    "//chromeos/ash/components/settings",
    "//chromeos/components/kiosk:test_support",
    "//chromeos/dbus/constants",
    "//chromeos/dbus/tpm_manager",
    "//components/policy/core/common:test_support",
    "//components/sync_preferences:test_support",
    "//components/user_manager",
    "//content/test:test_support",
    "//services/network:test_support",
  ]
}

config("allow_shadow_variables") {
  cflags = [ "-Wno-shadow" ]
}

# TODO(b/247823913): Merge this target back into the unit_tests target above
# when third_party/securemessage code stops generating -Wshadow warnings. Also
# remove the allow_shadow_variables config then.
source_set("test_with_shadow_variables") {
  testonly = true

  configs += [ ":allow_shadow_variables" ]

  sources = [ "soft_bind_attestation_flow_impl_unittest.cc" ]

  deps = [
    ":attestation",
    "//base",
    "//chrome/browser/ash/settings:test_support",
    "//chromeos/ash/components/attestation:test_support",
    "//chromeos/ash/components/settings",
    "//content/test:test_support",
    "//testing/gtest",
    "//third_party/securemessage",
    "//third_party/securemessage:securemessage_cpp_protobuf",
  ]
}

proto_library("attestation_proto") {
  sources = [ "attestation_key_payload.proto" ]
}