# Copyright 2017 The Fuchsia 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("clock") {
  sources = [
    "clock.h",
  ]
}

source_set("encrypted_message_util") {
  sources = [
    "encrypted_message_util.cc",
    "encrypted_message_util.h",
  ]
  configs -= [ "//build/config:no_rtti" ]

  public_configs = [ "//third_party/cobalt:cobalt_config" ]

  public_deps = [
    ":status",
    "//garnet/public/lib/fxl",
    "//third_party/cobalt:cobalt_proto",
    "//third_party/tink/cc:hybrid_encrypt",
    "//third_party/tink/cc/hybrid:hybrid_config",
    "//third_party/tink/cc:keyset_handle",
  ]
}

static_library("datetime_util") {
  sources = [
    "datetime_util.cc",
    "datetime_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//third_party/cobalt/config:cobalt_registry_proto",
  ]
}

static_library("pem_util") {
  sources = [
    "pem_util.cc",
    "pem_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//garnet/public/lib/fxl",
    "//third_party/cobalt/util/crypto_util",
  ]
}

static_library("status") {
  sources = [
    "status.cc",
    "status.h",
    "status_codes.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
}

static_library("posix_file_system") {
  sources = [
    "file_system.h",
    "posix_file_system.cc",
    "posix_file_system.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
}

static_library("consistent_proto_store") {
  sources = [
    "consistent_proto_store.cc",
    "consistent_proto_store.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    ":status",
    "//third_party/protobuf:protobuf_lite",
  ]
}

static_library("proto_util") {
  sources = [
    "proto_util.cc",
    "proto_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//garnet/public/lib/fxl",
    "//third_party/cobalt/util/crypto_util",
    "//third_party/protobuf:protobuf_lite",
  ]
}
