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

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

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

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