# 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.

source_set("cast_certificate") {
  sources = [
    "cast_cert_validator.cc",
    "cast_cert_validator.h",
    "cast_root_ca_cert_der-inc.h",
    "eureka_root_ca_der-inc.h",
  ]
  deps = [
    "//base",
    "//net",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "cast_cert_validator_test_helpers.cc",
    "cast_cert_validator_test_helpers.h",
  ]
  deps = [
    ":cast_certificate",
    "//base",
    "//net",
    "//testing/gtest",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "cast_cert_validator_unittest.cc",
  ]
  deps = [
    ":cast_certificate",
    ":test_support",
    "//base",
    "//net",
    "//testing/gtest",
  ]
}
